【问题标题】:Referring in EL to specific instance of h:datatable iteration variable在 EL 中引用 h:datatable 迭代变量的特定实例
【发布时间】:2011-01-16 10:05:22
【问题描述】:

好的。一个简单(?)问题的复杂标题。

我有这样的事情发生(我在这里尽可能简单地说明)

<h:dataTable var="testVar" value="#{bean.VariablesArray}">
<h:inputText id="TestingID" 
             styleClass="propertyInput" 
             value="#{testVar.var1}"
         disabled="#{testVar.var2 != false }" 
             readonly="#{testVar.var2 != false }" />
<h:selectBooleanCheckbox 
             value="#{testVar.var2}">
         <a4j:support event="onclick" reRender="TestingID" />
</h:dataTable>

它不起作用,我假设是因为与数据表相关的两个原因:

  1. EL "#{testVar.var2 != false }" 应该有更好的实例指示器。

  2. reRender="TestingID" 应该引用正确的 inputText 实例。

所以我的问题是我该如何正确地做到这一点?

谢谢!!!

【问题讨论】:

  • 呃,那些#{}的东西不是JavaScript,这是EL(表达式语言)。

标签: jsp jsf


【解决方案1】:

根据docreRender 采用UIComponent.findComponent(String) 使用的形式(即,它使用client identifier 而不是component identifier)。

有几种方法可以获得这个值(支持 bean、静态函数和/或组件绑定的组合),但你最终会得到这样的结果:

<h:inputText id="TestingID" styleClass="propertyInput" 
             value="#{testVar.var1}" disabled="#{testVar.var2 != false }" 
             readonly="#{testVar.var2 != false }"

             binding="#{someReqScopeMap.TestingID}" />

<h:selectBooleanCheckbox value="#{testVar.var2}">
  <a4j:support event="onclick"
             reRender="#{myfn:cid(someReqScopeMap.TestingID)}" />

更多详情和示例代码请参见JSF: working with component identifiers (id/clientId)

【讨论】:

    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 2016-08-27
    • 2015-05-16
    • 1970-01-01
    • 2018-07-18
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多