2 Replies Latest reply on Nov 13, 2013 2:45 AM by dmat2013

    Validation Exceptions for Composite Components


      Hi there,


      i am facing a problem while working with Composite Compontents which contains input fields.

      System: JSF 2.1.19-redhat-1, JBoss EAP 6.1


      Normally, Validation Exceptions (/ UpdateModelExceptions) based on wrong input, will result in a FacesMessage (if any "messages" Tag is present).

      With JSF 2.1.19-redhat-1, such exceptions will not be catched by the implementation and processes as FacesMessage if the input field is part of a Composite Component, instead the error is published as system exception on a new page. It seems that such errors inside composite component not recognize the existing messages-tag (displaying the error page is the default behaviour of the reference implemenation if no messages - tag is present and PROJECT_STAGE is "Production"


      Here a very simple example, which demonstrates the problem. This example works as expected with mojarra 2.1.27.

      Two input fields, which references a "Integer"-Value. non-numeric inputs in the "normal" field will result in the expected faces message, wrong inputs in the composite component will result in an error page.



      composite component (simpleInput.xhtml)

      <!DOCTYPE html>
      <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core"
          xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:cc="http://java.sun.com/jsf/composite">
              <cc:attribute name="valueAttribute" required="true" />
              <cc:editableValueHolder name="inputComp" targets="inputComp" />
              <h:inputText id="inputComp" value="#{cc.attrs.valueAttribute}"/><br/>
              <h:message for="inputComp"/>



      <h:form id="content">
          <h:messages id="messages" />
          <h:inputText value="#{demoController.someIntValue}" />
          <custome:simpleInput valueAttribute="#{demoController.someIntValue}"/>
          <h:commandButton value="submit" />


      Some ideas, what is going wrong? Some workarounds (besides to implement a own global exception handler)?


      Thanks a lot