gpt4 book ai didi

java - 在同一按钮上同时使用 JSF ajax 和 setPropertyActionListener 标记

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

我希望当用户单击按钮时会发生两件事:

  1. 首先触发 setPropertyActionListener,以更新我的 bean 的属性
  2. 然后进行 ajax 调用以执行 bean 中的方法

看来我必须在 f:setPropertyActionListener 标记和 f:ajax 标记之间进行选择以嵌套在 commandButton 标记内。

有没有办法同时执行ajax调用和属性更新?

非常感谢!

编辑:我忘了提及我不想执行表单,我想使用ajax监听器,这是我的代码:

<h:commandLink styleClass="blue-button" value="+">
<f:setPropertyActionListener target="#{tvShowForm.selected}" value="#{tvShow.externalId}" />
<f:ajax event="click" listener="#{tvShowForm.add}" />
</h:commandLink>

使用此代码,不会执行 f:setPropertyActionListener

编辑2:

我将代码修改为以下内容,使用操作表单方法而不是监听器。现在,只有当我不在 ajax 标记上指定事件属性时它才有效,但是当我指定事件属性时,操作方法不会执行。

<h:commandLink action="#{tvShowForm.add}" styleClass="blue-button" value="+">
<f:setPropertyActionListener target="#{tvShowForm.selected}" value="#{tvShow.externalId}" />
<f:ajax event="click" />
</h:commandLink>

最佳答案

适合我在 Tomcat 7.0.19 和 Glassfish 3.1.1 上使用 Mojarra 2.1.3。

我使用了该 View 的相关部分:

<h:form>
<h:commandButton value="submit" action="#{bean.submit}">
<f:setPropertyActionListener target="#{bean.value}" value="foo" />
<f:ajax />
</h:commandButton>
</h:form>

与此相关的 Bean 片段:

private String value;

public void submit() {
System.out.println("Value: " + value);
}

// Getter/setter.

在 ajax 提交上打印以下内容:

Value: foo

您的问题是由您遗漏的其他问题引起的。

<小时/>

更新:根据您的更新

I forgot to mention I don't want a form execution, I want to use the ajax listener, here is my code :

我真的不明白你为什么不想要“表单执行”。您正在提交表单。您只省略了操作方法,而是在 ajax 事件监听器中执行业务工作。操作监听器方法并不旨在执行任何业务工作,它们最多用于一些独立的处理或日志记录工作。依赖于模型的业务工作应该在操作方法中完成,就在那里。

关于java - 在同一按钮上同时使用 JSF ajax 和 setPropertyActionListener 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7861182/

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