ceci est ma définition de composant personnalisé:Facelet composant personnalisé - empêcher le rendu ui: insérer du contenu dans le composant personnalisé
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<c:if test="${empty required}">
<c:set var="required" value="false" />
</c:if>
<c:if test="${empty disabled}">
<c:set var="disabled" value="false" />
</c:if>
<c:if test="${not disabled}">
<div id="#{id}DIV">
<label for="#{id}" class="portlet-form-label">${label}</label>
<ui:insert name="field" />
<c:if test="${required}">*</c:if>
<strong class="portlet-msg-error" style="display: none;"><h:message for="#{id}" /></strong>
</div>
</c:if>
</ui:composition>
voici comment je peux l'utiliser:
<my:editLineInsert id="itSIN" label="#{label['label.stocks.income']}" tip="#{label['message.default.tooltip']}" disabled="#{engine.disabled['itSIN']}" required="#{engine.required['itSIN']}" >
<ui:define name="field">
<h:inputText id="itSIN" value="#{order.income}" disabled="#{engine.disabled['itSIN']}" required="#{engine.required['itSIN']}" >
<f:converter converterId="javax.faces.BigDecimal" />
<f:validator validatorId="V12DGS6DECS" />
</h:inputText>
</ui:define>
</my:editLineInsert>
J'ai du mal avec <ui:insert name="field" />
. Il rend TOUJOURS. Si désactivé = vrai, j'ai juste l'élément <input type="text" disabled="disabled" value="" name="itSIN" id="itSIN"/>
en haut de la vue. NOTE: J'utilise ui: insert pour passer le composant jsf car je n'ai aucune idée de comment passer les validateurs à un h: inputText dans un composant personnalisé.