当我更改selectOneButton组件的状态时,我无法更新我的组件

时间:2017-07-30 16:08:00

标签: jsf primefaces selectonebutton

我正在使用primefaces来实现我的网站,我正面临着一个问题 我使用了<p:selectOneButton value="#{myBean.dataTableType}" valueChangeListener="#{myBean.dataTableTypeChange}"> <f:selectItems value="#{myBean.dataTableTypes}" var="type" itemLabel="#{msg['datatable.type.'.concat(type)]}" itemValue="#{type}" /> <p:ajax update="table1 table2"/> </p:selectOneButton> 组件,根据选择的按钮,我想显示一个特定的数据表。因此,当我单击button1时,我想显示table1,当我单击button2时,我会显示table2。

这是我正在使用的代码:

let team = [ { name: 'Bob Jones', Info: { Height: '6.4', Weight: 170 }, age: 20 }, { name: 'John Anderson', Info: { Height: '5.4', Weight: 120 }, 'age': 23 }, { name: 'Tim Hamburger', Info: { Height: '6.1', Weight: 180 }, 'age': 25 }, { name: 'Tom Hamburger', Info: { Height: '6.6', Weight: 220 }, age: 30 }, { name: 'Jack Johnson', Info: { Height: '6.0', Weight: 190}, age: 41}, { name: 'Tommy Tubbs', Info: { Height: '6.1', Weight: 180}, age: 50}],
    age = team => team.filter(members => members.age >= 20 && members.age <= 25)
                      .map(members => members.name.split(' ')[0]);

console.log(age(team));//[ 'Bob Jones', 'John Anderson', 'Tim Hamburger' ]

使用此代码,我无法达到我想要的目标:(

2 个答案:

答案 0 :(得分:1)

我认为您可以很好地查看以下示例,并在bean中调用的侦听器中为表保留一个render标志。

https://stackoverflow.com/a/8409360/3403415

希望它有所帮助!!

答案 1 :(得分:0)

您应该为值为@this的ajax声明属性进程。此属性告诉selectOneButtonselectOneButtton发生某些事件时将值设置为bean。并且您将获得数据表类型的实际值。

现在你还没有。如果您有条件,例如:

<ui:fragment rendered="#{myBean.dataTableType eq FirstTable}">
    <p:datatable id="first_table">
        ...
    </p:datatable>
</ui:framgent>

条件返回false ..