gpt4 book ai didi

jsf - p :commandButton does not fire action

转载 作者:行者123 更新时间:2023-12-04 19:26:20 24 4
gpt4 key购买 nike

这里是问题所在: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设置 importimport javax.faces.event.ActionEvent;

但是它仍然没有触发任何东西。

表单位于 p:accordion 中当与 h:commandbutton 一起使用时它工作正常

编辑:抱歉造成误导。单击后房间会更新,但不会触发 actionListener。所以房间不会得到任何新数据。 requestHotelAvail 中的重要代码需要在更新房间之前被解雇,但事实并非如此。

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

我试过使用 action而不是 actionListener没有ActionEvent但它从不做任何事情。使用 <h:commandbutton action="#{hotelscontroller.requestHotelAvail}"/>效果很好,但我希望 ajax 引擎只刷新 rooms面板组

更新:现在可以使用了。表格不能在 <p:accordion> 中但是为什么以及如何在那里启用它?现在形成,没有它我会工作。

最佳答案

我怀疑 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" 明确指示要处理的组件 - 尽管我会假设这是默认设置基础库。

关于jsf - p :commandButton does not fire action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269704/

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