【问题标题】:f:ajax listener not called for h:selectBooleanCheckboxf:ajax 监听器未调用 h:selectBooleanCheckbox
【发布时间】:2011-07-20 10:34:16
【问题描述】:

使用这样的代码:

<h:selectBooleanCheckbox value="#{user.data['selected']}">
      <f:ajax event="click" listener="#{timetableBean.processUserEvents}"  />
      <f:attribute name="user" value="#{user}" />
</h:selectBooleanCheckbox>

方法代码为:

public void processUserEvents(AjaxBehaviorEvent e) {
  User user = (User) e.getComponent().getAttributes().get("user");
  ...
}

单击复选框确实会触发 ajax 提交,但根本不会调用侦听器方法。 最重要的是,没有错误消息,并且阶段正常完成。

我在尝试mojarra 2.0.4-b09,遇到这个错误后,我换了2.1.2,但同样的问题仍然存在。

是不是我做错了什么?

谢谢。


更新

问题在于将 h:selectBooleanCheckbox 放在 primefaces 数据列表 (p:dataList) 中。把它放在外面工作得很好。我想知道问题是什么。现在将在 primefaces 论坛中提问。

【问题讨论】:

  • 你的监听方法签名匹配public void processAjaxBehavior(javax.faces.event.AjaxBehaviorEvent event)吗?
  • @Matt Handy:谢谢,我已经更新了我上面的帖子,是的,我有那个签名。

标签: jsf jsf-2 primefaces


【解决方案1】:

这里是the answer of a similar problem

问题实际上是把复选框放在 p:dataList 中而不将其封装在 p:column 中。

用p:column包裹后,监听器会被正常调用。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 2012-07-06
    • 2011-06-21
    • 2012-04-08
    • 1970-01-01
    • 2014-03-13
    • 2015-05-08
    • 2012-08-06
    相关资源
    最近更新 更多