inputCalendar forEach调用异常

时间:2018-07-12 20:20:25

标签: jsf foreach jstl tomahawk

我收到以下代码的异常。

<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>

例外是:

enter image description here

之所以调用此异常,是因为我的inputCalendar ID错误(而且我不知道如何解决)。

当我不输入任何ID时,页面已加载,但是inputCalendars不起作用。

4 个答案:

答案 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>