gpt4 book ai didi

tapestry - 循环提交上下文

转载 作者:行者123 更新时间:2023-12-02 19:09:52 26 4
gpt4 key购买 nike

我在使用以下代码时遇到问题:

<t:form t:id="locationsForm" t:zone="myZone">
<t:loop t:source="locations" t:value="location" t:encoder="locationEncoder">
<t:textfield t:value="location.name" />
<t:submit t:event="RemoveLocation" t:value="remove ${location.hashCode()}" t:context="${location.hashCode()}" />
</t:loop>
<t:submit t:value="save" />
</t:form>

假设我最终得到以下按钮:

<input type="submit" name="button" id="button" value="remove 12339020">
<input type="submit" name="button" id="button" value="remove 2504658">

单击任一按钮都只会触发上下文 2504658 的事件 onRemoveLocation

我猜测第二个提交组件正在覆盖第一个提交组件注册的事件处理程序,因此它们最终都会调用第二个组件的事件处理程序。

我尝试将 clientId 设置为唯一的值,但这没有帮助。

我需要删除按钮来提交相同的表单,因为用户可能会在同一操作中更新一个元素的名称并删除第二个元素。

感谢您的建议,p。

(Tapestry 5.1.0.5)

最佳答案

当在具有上下文的循环中使用 Submit 时,您还需要设置 defer="false" 以避免这种行为:

<t:submit t:event="RemoveLocation" t:value="remove ${location.hashCode()}"
t:context="${location.hashCode()}" t:defer="false" />

来自docs :

defer: If true (the default), then any notification sent by the component will be deferred until the end of the form submission (this is usually desirable). In general, this can be left as the default except when the Submit component is rendering inside a Loop, in which case defer should be bound to false (otherwise, the event context will always be the final value of the Loop).

关于tapestry - 循环提交上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6013562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com