【问题标题】:JSF 2 composites and binding for validation用于验证的 JSF 2 组合和绑定
【发布时间】:2011-12-04 07:42:26
【问题描述】:

我对验证内部输入字段的 JSF 组合有疑问。 只要只包含一个组合,下面的代码 sn-p 就可以工作。

<div id="#{cc.clientId}" >
  <h:panelGroup styleClass="#{not firstname.valid ? 'fmError' : ''}">
    <div class="col220">
        <h:outputLabel for="firstname" value="Vorname(n):" />
    </div>
    <div class="col220">
        <h:inputText id="firstname" styleClass="fmTxt " 
            value="#{cc.attrs.person.firstname}" binding="#{firstname}">
            <f:validateRequired />
        </h:inputText>

    </div>
  </h:panelGroup>
</div>

如您所见,我使用 cc.clientId 来包装组合,并为组合内的组件提供唯一 ID。因此,可以在单个页面上包含多个组合。

问题始于验证和绑定 inputText 组件的需要。我需要这个来询问 panelGroup 中的验证结果,以便不仅突出显示 inputField 还突出显示标签。

当在页面上仅使用一个组合时,此代码可以完美运行。使用第二个时,不再显示 inputField 'firstname'。我猜这与绑定及其硬编码的“#{firstname}”有关。

现在的问题是:如何为绑定属性创建唯一标识符?

感谢任何提示。谢谢!

【问题讨论】:

    标签: java jsf-2 composite-component


    【解决方案1】:

    我建议创建一个具有唯一 ID 的别名并将其存储在请求范围内。

    <div id="#{cc.clientId}">
      <ui:param name="firstname" value="#{cc.clientId}_firstname" />
      <h:panelGroup styleClass="#{not requestScope[firstname].valid ? 'error' : ''}">
        <div class="col220">
            <h:outputLabel for="firstname" value="Vorname(n):" />
        </div>
        <div class="col220">
            <h:inputText id="firstname" styleClass="fmTxt " 
                value="#{cc.attrs.value}" binding="#{requestScope[firstname]}">
                <f:validateRequired />
            </h:inputText>
    
        </div>
      </h:panelGroup>
    </div>
    

    【讨论】:

      猜你喜欢
      • 2011-05-19
      • 2015-02-13
      • 1970-01-01
      • 2011-09-07
      • 2012-06-08
      • 2012-09-04
      • 2011-07-19
      • 2013-10-17
      • 2012-10-28
      相关资源
      最近更新 更多