【问题标题】:selectOneMenu does not change the value of the bean objectselectOneMenu 不会改变 bean 对象的值
【发布时间】:2019-03-28 09:10:59
【问题描述】:

所以我有以下代码:

<h:inputText value = "#{listAllBookings.searchText}">
  <f:ajax listener="#{listAllBookings.printValues()}" event="keyup" render="myTable"/>
</h:inputText>             
<h:selectOneMenu value="#{listAllBookings.selectedAttr}">
  <f:selectItem itemLabel="GUEST" itemValue="GUEST"/>
  <f:selectItem itemLabel="HOTEL" itemValue="HOTEL"/>
</h:selectOneMenu>

还有我的 printValues 方法:

public void printValues() {
    System.out.println("searchText:"  + searchText + " and selectedAttr: " + selectedAttr);
}

如您所见,上面的代码非常简单。 问题是我无法更改 selectedAttr 值的值。我已经检查过我是否有合适的 getter 和 setter 方法。 selectedAttr 的值保持为空,而 searchText 的值发生变化。

当前输出如下所示:

【问题讨论】:

标签: jsf javabeans onchange managed-bean selectonemenu


【解决方案1】:

您没有使用 ajax 请求指定要执行的组件。所以只执行文本字段。

id 添加到selectOneMenu 并执行它:

<h:inputText value="#{listAllBookings.searchText}">
  <f:ajax listener="#{listAllBookings.printValues()}" event="keyup" render="myTable"
  execute="@this selectSomething"/>
</h:inputText>             
<h:selectOneMenu id="selectSomething" value="#{listAllBookings.selectedAttr}">
  <f:selectItem itemLabel="GUEST" itemValue="GUEST"/>
  <f:selectItem itemLabel="HOTEL" itemValue="HOTEL"/>
</h:selectOneMenu>

但你也可以通过execute="@form"执行环绕表单

另请参阅

【讨论】:

    【解决方案2】:

    试试这个:

    <h:selectOneMenu value="#{listAllBookings.selectedAttr}">
    <f:ajax event="change" listener="#{listAllBookings.printValues()}" />
      <f:selectItem itemLabel="GUEST" itemValue="GUEST"/>
      <f:selectItem itemLabel="HOTEL" itemValue="HOTEL"/>
    </h:selectOneMenu>
    

    【讨论】:

    • 据我们所知,OP 并未使用 PrimeFaces
    猜你喜欢
    • 2012-08-10
    • 2021-05-08
    • 2021-09-12
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2018-07-20
    相关资源
    最近更新 更多