【问题标题】:Facelet Custom Component - prevent rendering ui:insert content in custom componentFacelet 自定义组件 - 防止呈现 ui:在自定义组件中插入内容
【发布时间】:2010-12-02 16:10:58
【问题描述】:

这是我的自定义组件定义:

<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>

这就是我的使用方式:

<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>

&lt;ui:insert name="field" /&gt; 有问题。它总是呈现。如果 disabled=true 我在视图顶部只有&lt;input type="text" disabled="disabled" value="" name="itSIN" id="itSIN"/&gt; 元素。注意:我使用 ui:insert 传递 jsf 组件,因为我不知道如何将验证器传递给自定义组件内的 h:inputText。

【问题讨论】:

    标签: jsp jsf facelets custom-component


    【解决方案1】:

    我的猜测是您的&lt;c:if&gt; 没有按预期工作,因为它们在组件树构建阶段进行了评估,然后不再存在。看看this page

    我个人避免在 facelets 中使用 JSTL 标记,因为这些警告会使它们违反直觉。您可以使用标签&lt;ui:fragment&gt;&lt;h:panelGroup&gt; 来代替&lt;c:if&gt;,使用它们的“rendered”属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 2014-11-01
      • 2011-11-12
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多