gpt4 book ai didi

ajax - 在 p :selectOneRadio 上执行支持 Bean 操作

转载 作者:行者123 更新时间:2023-12-02 22:24:39 26 4
gpt4 key购买 nike

我正在使用一个单选组件,当选择一个项目时,我想在支持 bean 上执行一个操作(不是导航到结果页面,而是执行一些操作,然后通过 Ajax 更新当前页面)。问题是我无法执行支持 bean 值更改监听器操作

<h:form id="one-radio">
<p:selectOneRadio layout="grid"
valueChangeListener="#{myBean.selectRadioItem}" >
<p:ajax process="@this" update="@form" />
<f:selectItems value="#{myBean.radioOptions}" var="radio"
itemLabel="#{radio.name}" itemValue="#{radio.id}" >
</f:selectItems>
</p:selectOneRadio>
</h:form>

以及支持 bean 方法...

public void selectRadioItem(ValueChangeEvent event) {
String[] selectedItems = (String[]) event.getNewValue();
//more...
}

我缺少的代码有问题吗?我使用了相同的结构来选择许多正在运行的复选框...

最佳答案

Rodrigo,valueChangeListener 和通过 ajax 进行的简单方法调用之间存在差异。

Check this answer by BalusC关于valueChangeListener之间的区别和<f:ajax>

要解决您的问题,您可以使用 listener <p:ajax>的属性(property).

OneRadio组件用于仅接收一个值,如果要选择一系列值,请使用SelectOneMenu

尝试执行以下操作:

<p:selectOneRadio layout="grid" value="#{myBean.radioValue}">
<p:ajax process="@this" update="@form" listener="#{myBean.selectRadioItem}"/>
<f:selectItems value="#{myBean.radioOptions}" var="radio"
itemLabel="#{radio.name}" itemValue="#{radio.id}" >
</f:selectItems>
</p:selectOneRadio>

在backbean中,您可以删除事件参数,因为OneRadio组件现在的值是一个属性,我将其命名为radioValue

String radioValue;
...
public void selectRadioItem() {
String selectedItem = this.radioValue;
//more...
}

关于ajax - 在 p :selectOneRadio 上执行支持 Bean 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27867098/

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