在循环中渲染表单

时间:2012-11-12 14:39:33

标签: java java-ee tapestry

这个问题是关于 Tapestry 4 (不是Tapestry 5)。 如果我尝试在循环中渲染表单组件并提交一个表单,验证会在两个表单中显示错误,因为tapestry只创建一个表单实例并重用它。似乎我需要为每个表单提供唯一的id,但我不知道如何。 以下是重现该问题的代码:

    <block jwcid="formBlock@Block">
        <form jwcid="@Form">
            <input jwcid="@TextField" value="literal:" validators="validators:required" />
            <input type="submit" />
        </form>
    </block>
    <for jwcid="@Foreach" source="ognl:new int[]{1,2}">
        <span jwcid="@RenderBlock" block="component:formBlock" />
    </for>

1 个答案:

答案 0 :(得分:0)

验证错误在浏览器中显示两次的原因是因为实际上您只有一个表单;你只是渲染两次。如果您希望每个表单都有单独的验证处理,那么您必须创建两个单独的@Form组件。