1

我正在使用 JSTL forEach 和 ah: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>

与往常一样,感谢任何帮助或指导。

问候,

麦克风

4

2 回答 2

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>
于 2013-04-09T02:40:56.350 回答
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]}"/>

受此主题启发

于 2017-03-24T08:53:33.927 回答