当前位置: 首页 > 知识库问答 >
问题:

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

伯洋
2023-03-14

我正在使用一个无线电组件,当选择一个项目时,我想在该组件上执行对支持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>

还有背豆法...

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

代码中是否有我遗漏的错误?我使用了相同的结构来选择多个复选框,这是有效的。。。

共有1个答案

桓深
2023-03-14

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

检查BalusC关于valueChangeListener和

为了解决您的问题,您可以使用listener属性

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...
}

 类似资料:
  • 我通过JSONP获取一个值到我的网页。现在我想用这个值更新一个支持bean属性?如何处理?提前谢谢。 更新:好的,我的问题是有JavaScripts、JSF Ajax调用和Webservices,我必须看看什么时候触发了哪个动作。我想我需要更详细地描述我的处境。 我的支持bean: 我的xhtml页面: 我的Javascript文件: 页面渲染后我有三个阶段。preSaveCaseButton应该

  • 无法在下面的链接中执行右键单击操作。我们尝试了几乎所有的案例来实现自动化。https://the-internet.herokuapp.com/context_menu 我使用的是Selenium 3.3和geckodrivers的最新版本。 动作动作=新动作(驱动);行为moveToElement(元素)。点击();行为上下文单击(元素)。build()。执行();行为发送键(键。箭头向下)。发

  • 我希望允许人们使用一些部署工具在他们的Azure环境中执行操作。 我们目前有一个运行中的msal.js解决方案,用于支持工作帐户能够使用AAD应用程序登录并获取范围。 为了支持非工作帐户,我们: null 如果不能获得此API的权限,我们就不能列出某人可以访问的租户,以便我们可以继续。需要手动提供租户ID并更改我们的登录endpoint,这似乎是非常落后和糟糕的UX。之前,我们只是假设它是他们的A

  • 我有一个带有Vaadin集成(v14)的Spring Boot项目。我希望我的应用程序做一些后台操作,并在基于Vaadin的前端上表示结果。为此,我有一个视图,它是用Vaadin Designer(.js)生成的聚合物模板,并连接到Java companion类。在这个视图中,我只是简单地添加了一个用以下监听器初始化的按钮: 我正试图访问文档中所说的UI。然而,当它被执行时,它只到达第一个“等待”

  • SDS 提供了以下一系列操作来处理表和记录 表操作 SDS 提供创建、修改、复制、禁用、启用和删除表的操作 创建表(createTable):以指定的表名和schema创建一张表 修改表(alterTable):可以增加或删除属性,修改表权限,修改读写配额、空间配额,修改二级索引类型等 复制表(cloneTable):从现有的表复制一张表名不同但内容一样的表 禁用表(disableTable):将

  • 问题内容: 我有一个http服务器(使用启动),我想做一些操作。 我该怎么做(在Linux上)?在ctrl-C的情况下可以进行那些操作吗? 我不熟悉Unix信号,因此答案可能很简单。 问题答案: 您可以使用信号包订购TERM和INT信号。但是请注意,只有在明确终止进程时才发送这些信号。正常退出(由流程本身启动)不涉及任何信号。我认为,对于正常退出,只需在主例程中执行某些操作即可(该例程应该生成工作