JSF2构建动态EL表达式

时间:2013-04-02 16:19:53

标签: jsf jsf-2 jstl el

我正在使用JSTL forEach和h:dataTable创建一个动态表,并且所有控件和潜在的错误消息都很好地显示,但我现在仍然坚持为每个控件设置值。我需要创建(我认为)一个动态EL表达式来设置值,但是无法让我的任何版本工作。我希望使用c:out构建表达式,但发现JSF2中没有该标记。

那么,是否可以在页面中构建动态表达式? 如果尚未构建控件,如何在辅助bean中设置表达式?

 <h:dataTable id="dtDetails" styleClass="slate_table" value="#{remediationDetail.eventList}" var="dataItem">
 <c:forEach items="#{remediationDetail.eventHeaders}" var="key">
  <h:column>
      <f:facet name="header">#{key.fieldDefinition.fieldConfiguration.customLabel}</f:facet>
         <h:inputText value="" id="txtNumber" styleClass="remediation_textbox error_marker" title="#{remediationDetail.errorMessages(dataItem.id, key.fieldDefinition.id)}">
           <f:convertNumber maxFractionDigits="0" maxIntegerDigits="19"/>
  </h:column>
 </c:forEach>
</h:dataTable>

与往常一样,任何帮助或方向都值得赞赏。

此致

迈克

2 个答案:

答案 0 :(得分:0)

我无法创建动态EL表达式。所以,我最后使用c:forEach的索引来帮助定义我要查找的值。这个结果唯一的结果就是我希望我要显示的数据在数组中具有相同的位置数。

<c:forEach items="#{remediationDetail.eventHeaders}" var="key" varStatus="looper">
    <h:column>
        <f:facet name="header">#{key.fieldDefinition.fieldConfiguration.customLabel}</f:facet>
<h:inputText id="txtNumber" value="#{dataItem.entityList[looper.index].val}">
   <f:convertNumber maxFractionDigits="0" maxIntegerDigits="19"/>
</h:inputText>
    </h:column>
 </c:forEach>

答案 1 :(得分:0)

在我的情况下,以下内容有助于构建动态EL。

<ui:param name="beanName" value="myBackedBean"/>
<ui:param name="propertyName" value="field1"/>
<ui:param name="nestedPropertyName" value="field1"/>

<p:inputTextarea value="#{sessionScope[beanName][propertyName][nestedPropertyName]}"/>

灵感来自topic