old thread, but I think the current behavior is a mistake, because the following works, and therefore it should work in the composite component:
component.xhtml:
<?xml version='1.0' encoding='UTF-8' ?> <ui:component xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:cc="http://xmlns.jcp.org/jsf/composite" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:a="http://xmlns.jcp.org/jsf/passthrough" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" > <cc:interface> <cc:facet name="someFacet" required="true"/> </cc:interface> <cc:implementation> <h:commandLink value="this link should not work (not in a form)"/><br/> <h:commandLink value="this link works as expected (within form, but not in facet)"/><br/> <cc:renderFacet name="someFacet"/> </cc:implementation> </ui:component>
Using it ( index.xhtml ):
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:mycomp="http://xmlns.jcp.org/jsf/composite/mycomp" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> </h:head> <h:body> <h:form> <mycomp:component> <f:facet name="someFacet"> <h:commandLink value="this link should work, but does not (within form, within facet)"/><br/> <h:commandButton value="this button works as expected (within form, within facet)"/><br/> </f:facet> </mycomp:component> </h:form> </h:body> </html>
Also, the generated HTML output in both cases generates a button in the right place in the component tree (in form). But the clientId generated for the button is different in both cases:
- First thread message -> clientId without form identifier
- My post -> clientId includes form id
In my opinion, this seems like a mistake, but maybe someone can convince me that it is not: D
Using Mojarra 2.2.13 (Right 9).
source share