我收到以下代码的异常。
<c:forEach var="calculoNotaUnidade" varStatus="counter" items="#{ configuracoesAva.calculoNotaUnidades }">
<tr>
<td>
<t:inputCalendar id="${ counter.count }" value="#{ calculoNotaUnidade.dataFinalizacaoUnidade }" style="z-index:999;" popupButtonStyle="z-index:0;" renderAsPopup="true" renderPopupButtonAsImage="true" size="10" onkeypress="return (formataData(this,event));" maxlength="10" title="Data de Finalização">
<f:convertDateTime pattern="dd/MM/yyyy" />
</t:inputCalendar>
</td>
</tr>
</c:forEach>
例外是:
之所以调用此异常,是因为我的inputCalendar ID错误(而且我不知道如何解决)。
当我不输入任何ID时,页面已加载,但是inputCalendars
不起作用。
答案 0 :(得分:0)
我很确定您的jstl c:foreach
在查看您的堆栈跟踪时不起作用。尝试通过例如看着命名空间等。即使您确实可以使用,您的ID也不能以数字开头。给它们加上一个允许的前缀。
id="c_${counter.count}"
并尝试使用#而不是$
另请参阅:
答案 1 :(得分:0)
尝试这个id="id_<c:out value="${counter.count}"/>"
答案 2 :(得分:0)
JSF不接受用于设置ID的表达式变量。到JSF准备HTML时,它应该已经具有可用于生成HTML的值,显然不是这种情况。
顺便说一句,您无需手动包含ID即可设置索引。 JSF会自动为您执行此操作,例如以下代码段:
<ui:repeat id="test" value="#{bean.collection}" var="item">
<p:inputText id"testInput" value="#{bean.inputValue}"/>
</ui:repeat>
生成的HTML将是这样的(假设变量bean.collection具有3条记录):
<input id="id:0:testInput"></input>
<input id="id:1:testInput"></input>
<input id="id:2:testInput"></input>
如您所见,索引已经附加到HTML id上,因此这意味着您实际上不需要尝试应用的逻辑,因为JSF会自动为您执行此操作。
答案 3 :(得分:0)
这是我们为动态生成id而执行的代码,我们从未遇到任何问题
<c:forEach items="#{linkCreationBean.editLinkVO.genericFeaturesList}"
var="genFeatCapacity" varStatus="genericFeatCapIndex">
<h:outputText value="#{genFeatCapacity.label}"
id="sub_#{genericFeatCapIndex.index}_equip" />
<h:outputText value="" rendered="#{!genFeatCapacity.required}" />
<c:if test="#{genFeatCapacity.enumValues.size() gt 0}">
<h:selectOneMenu id="select_#{genericFeatCapIndex.index}_onemenu_sub"
value="#{genFeatCapacity.value}">
</h:selectOneMenu>
</c:if>
</c:forEach>