为什么 s:select 在 s:iterator 标签中不起作用?

4

我在迭代器中使用 select 出现了问题。每当我在 select 的 name 属性中使用迭代器 status 的 index 值时,表单无法正常提交。

在我的代码中,我使用第一个迭代器遍历一组日期,使用第二个迭代器遍历我的记录以显示和编辑它们的数据。

page.jsp:

<s:iterator value="daysOfWeek" var="jour" status="stat">
    <div class="gu desk-s1 desk-w2" id="plage${stat.index}">
        <s:text name="%{#jour}"/>
        <s:submit type="button" action="addPlage/%{#stat.index}">+</s:submit>
        <s:iterator value="plageRecords" var="plage" status="innserStat">
            <s:if test="%{#plage.jour == #stat.index}">
                <s:include value="plage/plage_cell.jsp"/>
            </s:if>
        </s:iterator>
    </div>
</s:iterator>

page_cell.jsp:

<div class="g rev-width rev-top-m1">
    <div class="gu desk-w6">
        <label><s:text name="admin.plage.label.endHour" /></label>
        <s:fielderror class="fieldError"
                      fieldName="plageRecords[%{#innserStat.index}].heureFin"/>
    </div>
    <div class="gu desk-w10">
        <s:select name="plageRecords[%{#innserStat.index}].heureFin"
                  cssClass="rev-side-m1 rev-width" list="endHourList"/>
    </div>
</div>

表单未能正确提交。还有更具体的信息吗? - Thomas
当然可以,即使没有进行验证,该操作也不会被执行并返回“input”。 - Rémi Hirtz
1
你检查了帖子正文的内容吗?最好发布一个 [mcve]。 - Thomas
哦,谢谢你让我找对了方向。我本来以为问题出在jsp上,但实际上是我的记录中heureDebutheureFin属性的类型有问题。 - Rémi Hirtz
谢谢,问题已解决 :) - Rémi Hirtz
1个回答

1
您的if标签表达式有误:
<s:if test="%{#plage.jour == #stat.index}">

它应该是这样的

<s:if test="%{#plage.jour == #jour}">

如果表达式未被评估或评估结果为“false”,则选择标签将永远不会添加到表单中,表单数据也将永远不会被提交。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接