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

我希望当用户点击按钮时,会发生以下事情:

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

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

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

非常感谢!

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

     

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

编辑2:

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

     

适用于Tomcat 7.0.19和Glassfish 3.1.1的Mojarra 2.1.3。

我使用了这个相关的视图:

       

用这个相关的豆片:

 private String value; public void submit() { System.out.println("Value: " + value); } // Getter/setter. 

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

价值:foo

你的问题是由你遗漏了问题的其他东西引起的。


更新 :根据您的更新

我忘了提到我不想要表单执行,我想使用ajax监听器,这里是我的代码:

我真的不明白为什么你不想要“表格执行”。 您正在提交表单。 您只是省略了操作方法,而是在ajax事件侦听器中执行业务工作。 动作监听器方法并不打算从事任何业务工作,它们最高的是一些自包含处理或日志记录工作。 依赖于模型的业务工作应该在action方法中完成。