【问题标题】:How to set visibility of a f:selectItem into p:selectOneRadio?如何将 f:selectItem 的可见性设置为 p:selectOneRadio?
【发布时间】:2013-05-17 15:18:04
【问题描述】:

我的表单中有一个带有 4 个选项的 p:SelectOneRadio。 我想在一个 f:SelectItem 中将条件 Rendered 设置为 false,具体取决于用户配置文件(存储在会话中)

例如:如果用户是管理员,他可以看到选项 4 (f:selectItem)。

我已经知道怎么做,但是组件 SelectItem 似乎没有“渲染”属性,我应该用什么来做呢?

                    <p:selectOneRadio id="rdnNivel"
                    value="#{empresaController.selected.nivel}" layout="custom"
                    required="true"
                    requiredMessage="Select one option">
                    <f:selectItem itemLabel="Option 1" itemValue="1" />
                    <f:selectItem itemLabel="Option 2" itemValue="2" />
                    <f:selectItem itemLabel="Option 3" itemValue="3" />
                    <f:selectItem itemLabel="Option 4" itemValue="4"/>

谢谢!

【问题讨论】:

  • 您应该改用 f:selectItems,并在后台 bean 中检索项目列表
  • 这也是个好办法!我也在阅读“可能重复”
  • 谢谢@perissf,它现在可以工作了。

标签: java jsf primefaces


【解决方案1】:

感谢@perissef 解决了问题

豆子:

private List<SelectItem> niveis = new ArrayList<SelectItem>();
public Collection<SelectItem> getNiveis() {
if (niveis.isEmpty()) {
    this.niveis.add(new SelectItem(1, "Option 1"));
    this.niveis.add(new SelectItem(2, "Option 2"));
    this.niveis.add(new SelectItem(3, "Option 3"));
    if (FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("perfil") == "ADM") {
    this.niveis.add(new SelectItem(4, "option 4"));
    }
}
return niveis;
}

xhtml,自定义primefaces selectOneRadio:

<p:selectOneRadio id="rdnNivel"
                    value="#{empresaController.selected.nivel}" layout="custom"
                    required="true">
                    <f:selectItems value="#{empresaController.niveis}" />
                </p:selectOneRadio>

                <p:panelGrid columns="2">
                    <p:radioButton id="opt1" for="rdnNivel" itemIndex="0" />
                    <h:outputLabel for="opt1" value=" Nivel 1" />

                    <p:radioButton id="opt2" for="rdnNivel" itemIndex="1" />
                    <h:outputLabel for="opt2" value=" Nivel 2" />

                    <p:radioButton id="opt3" for="rdnNivel" itemIndex="2" />
                    <h:outputLabel for="opt3" value=" Nivel 3" />

                    <p:radioButton id="opt4" for="rdnNivel" itemIndex="3"
                        rendered="#{(sessionScope['perfil'] == 'ADM')}" />
                    <h:outputLabel for="opt4" value=" Nivel 4"
                        rendered="#{(sessionScope['perfil'] == 'ADM')}" />
                </p:panelGrid>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2015-04-08
    • 2021-12-27
    • 2023-03-03
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多