Jsf p:commandButton不触发动作

Jsf p:commandButton不触发动作,jsf,primefaces,Jsf,Primefaces,问题是:actionlistener不想被解雇 @ManagedBean(name="hotelsController") @SessionScoped public class HotelsController implements Serializable { public void requestHotelAvail(ActionEvent event) { request = new Request(df.format(arrivalDate), df

问题是:actionlistener不想被解雇

@ManagedBean(name="hotelsController")
@SessionScoped
   public class HotelsController implements Serializable {
      public void requestHotelAvail(ActionEvent event) {
         request = new Request(df.format(arrivalDate), df.format(departureDate));
      }
   }
和xhtml

<h:panelgroup id="rooms"/>
<h:form  id="hotelSearch">
            <p:commandButton actionListener="#{hotelsController.requestHotelAvail}" value="submit" update="rooms" />
</h:form>

我已经尝试了所有我可以搜索的内容,将
@managedbean
更改为
@component
设置为
导入
导入javax.faces.event.ActionEvent

但它仍然没有发射任何东西

表单是在一个
p:accordion
中,当与
h:commandbutton
一起使用时,它可以正常工作

编辑:抱歉误导。房间在单击后更新,但actionListener未被激发。因此,房间将不会获得任何新数据。更新房间之前,需要触发
requestHotelAvail
中的重要代码,而不是更新房间

EDIT2
PrimeFaces 2.2.1
-我已经阅读了PrimeFaces的整个手册,但没有对此进行解释,因为我已经完成了手册中的所有说明

我尝试过使用
action
而不是
actionListener
而不使用
ActionEvent
,但它从来没有做过任何事情。使用
效果很好,但我希望ajax引擎只刷新
房间
面板组


更新:现在它可以工作了。表单不能在
中,但为什么以及如何在那里启用它?现在我不用它就可以使用表单。

我怀疑h:commandLink的不同行为来自ajax/非ajax处理

默认情况下,如果不使用f:ajax,那么-h:commandLink是非ajax的,并且整个页面都会重新呈现。Primefaces p:commandLink正在使用ajax,您将房间指定为要更新的组件。在您的案例中,房间是外部形式的,所以应该将其命名为:房间(注意冒号),而不仅仅是房间

更新:您是否使用h:commandLink尝试过ajax?它将是:

<h:commandButton action="#{hotelscontroller.requestHotelAvail}" value="submit">
  <f:ajax render=":rooms"/>
</h:commandButton>


另外,我对primefaces不太熟悉,但也许您可以尝试使用附加的
process=“@this”
-明确指示要处理的组件,尽管我假设这是基本库中的默认组件。

您尝试检查响应:

打开Chrome或Firefox->Inspect Element->Network并遵循ajax调用


使用“不触发任何内容”时,您的实际意思是1)未调用该方法(由调试器、记录器或sysout确认),或者2)未更新
文件室
面板组?不会解决您的问题,但最好将表单组件置于所有其他组件之上,只要它不干扰其他表单(避免内部表单)。此外,在该方法中放入一些
sysout的
,以确保或在该类中创建另一个方法。。。在服务器日志中没有显示任何内容?比如找不到bean,或者找不到操作/属性?如果您使用Netbeans,请确保您的类是正确构建的…什么版本?尝试
action
而不是
actionListener
,并删除您没有使用的
ActionEvent
参数。我没有使用h:commandLink,问题不在于
更新
而是
actionListener
。更新工作正常
它现在的行为与
相同,因此更新了panelgroup,但不会触发操作。对于managedBean或您试图放置的整个xhtmlCan在p:accordion之外,肯定会有更大的问题?这听起来像是一个迭代组件,而且这些组件往往会有问题。谢谢你,这很有魅力,但现在我必须找出为什么以及如何在
中使用它。如果你认为这是p:accordion的问题,请提交一个问题。