gpt4 book ai didi

ajax - JSF h :commandButton fires other command buttons within form?

转载 作者:行者123 更新时间:2023-12-01 23:59:32 27 4
gpt4 key购买 nike

我有一个包含多个 h:commandButtons 的表单 - 所有都附加了 f:ajax 标签。当我触发其中一个命令按钮时,我在日志中看到实际上所有按钮都被触发了 - 所以所有操作都被调用了吗?

这是 h:commandButton + f:ajax 组合的正常行为吗?

我使用的是 commandButton 的 action 属性,而不是 f:fajax 上的监听器。

希望有人能给我解释一下。

提前致谢。

/索伦

编辑:

简化代码:

<h:form>
<ui:repeat ...>
<h:inputText value="#{order.quantity}"/>
</ui:repeat>
<h:commandButton type="button" action="#{facade.updateOrderItems()}" value="Update">
<f:ajax execute="@form" render=":orderList" onevent="onAjaxEvent"></f:ajax>
</h:commandButton>
<h:commandButton type="button" action="#{facade.deleteSelectedOrderItems(order)}" value="Delete">
<f:ajax execute="@form" render=":orderList" onevent="onAjaxEvent"></f:ajax>
</h:commandButton>
<h:commandButton type="button" action="#{facade.addOrdersItemsToWishList(order)}" value="Add to wish list"> <f:ajax execute="@form" render=":orderList" onevent="onAjaxEvent"></f:ajax>
</h:commandButton>
</h:form>

当我点击“更新”按钮时,似乎“删除”和“添加到愿望 list ”按钮也被调用了……?

最佳答案

我希望不会太晚。自两天前我遇到了同样的问题,现在终于解决了。事实证明,问题出在 type="button"上。所以把它扔掉是解决方法。在您的 f:ajax 中,您必须使用 execute="@form"以便触发输入字段的 valueChange 事件以在 bean 中包含数据,否则仅执行命令按钮并且不注册 valueChange。所以你的按钮应该是这样的:

<h:commandButton action="#{facade.deleteSelectedOrderItems(order)}" value="Delete">
<f:ajax execute="@form" render=":orderList" onevent="onAjaxEvent"></f:ajax>
</h:commandButton>

关于ajax - JSF h :commandButton fires other command buttons within form?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134468/

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