gpt4 book ai didi

java - :ajax listener fails within dynamically added h:selectOneMenu

转载 作者:太空宇宙 更新时间:2023-11-04 08:14:06 25 4
gpt4 key购买 nike

我正在向页面动态添加 h:selectOneMenu。但是 f:ajaxlistener 方法不会为 selectItems 调用,但如果 h:selectOneMenu 已从一开始就添加到页面(不是使用 update 属性动态添加),则该方法确实可以工作。我的代码如下:

(根据@Daniel的建议更正)

    <h:commandButton value="Watch">
<f:ajax render="deptsSelBox"/>
<f:setPropertyActionListener value="#{true}" target="#{listRetriever.allow}" />
</h:commandButton>

<h:panelGroup id="deptsSelBox">
<h:selectOneMenu id="deptsSel" rendered="#{listRetriever.allow}" value="#{listRetriever.reqId}">
<f:selectItems value="#{listRetriever.list}" />
<f:ajax listener="#{listRetriever.retrieve()}" execute="deptsSel" />
</h:selectOneMenu>
</h:panelGroup>

最佳答案

h:commandButton 没有 update 属性,看起来像是 primefaces 和纯 JSF 的混合(update 属性来自 p:commandButton)

f:ajax 添加到 commandButton 并使用 render 属性

<h:commandButton value="Watch">
<f:ajax render="deptsSelBox"/>
<f:setPropertyActionListener value="#{true}" target="#{listRetriever.allow}" />
</h:commandButton>

还将您的选择 ajax 修复为此

<f:ajax listener="#{listRetriever.retrieve}" update="deptsSel"/>

并尝试将范围从request更改为view

另一种方法是在方法内设置 allow 的值,如下所示(您也可以将其作为参数发送)

<h:commandButton value="Watch" action="listRetriever.updateAllow">
<f:ajax render="deptsSelBox"/>
</h:commandButton>


public void updateAllow(){
allow = true;
}

关于java - :ajax listener fails within dynamically added h:selectOneMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731925/

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