小编Sky*_*lot的帖子

如何在验证阶段隐藏JSF组件

我有3个列表框:第一个包含类型,第二个包含所选类型的子类型,第三个包含所选类型和子类型的元素.

<p:selectonelistbox id = "types" rendered = "true" valuechangelistener = "#{bean.selectType}" onchange = "submit()" />
<p:selectonelistbox id = "subtypes" rendered = "#{bean.subtypesFlag}" valuechangelistener = "#{bean.selectSubType}" onchange = "submit()" />
<p:selectonelistbox id = "elements" rendered = "#{bean.elementsFlag}" />


@viewscoped
...
private Boolean subtypesFlag = false;
private Boolean elementsFlag = false;
public void selectType(ValueChangeEvent  event) {
  subtypesFlag = true;
  elementsFlag = false;
}
public void selectSubType(ValueChangeEvent  event) {
  elementsFlag = true;
}
Run Code Online (Sandbox Code Playgroud)

始终显示第一个列表框,仅在选择某个类型时显示第二个列表框,仅在选择子类型时显示第三个列表框.

当我打开视图时,只渲染类型.然后我按某种类型,亚型变得可见.接下来我按下一些子类型,元素变得可见.一切都很好.

但是当我选择另一种类型时,我想只显示子类型,但没有元素列表框.我有一个问题.当我真正选择其他类型时,我可以看到所有三个列表框.当我再次按下另一种类型时,我只看到类型和子类型,没有元素列表框.

这似乎是一个有趣的事实,当在应用请求值阶段时,您的组件将标志设置为false并且在验证阶段(当调用值操作侦听器时)变为 …

jsf primefaces

3
推荐指数
1
解决办法
1004
查看次数

标签 统计

jsf ×1

primefaces ×1