【问题标题】:How to enable/disable components in jsf/icefaces? [duplicate]如何启用/禁用 jsf/icefaces 中的组件? [复制]
【发布时间】:2011-03-28 20:01:22
【问题描述】:

我正在寻找如何根据用户登录来启用和禁用 icefaces 组件? 例如:

如果以管理员身份登录我需要启用更多组件并以用户身份登录,禁用某些组件以及在一个页面中添加一些其他组件?如何在jsf/icefaces中实现这个功能?

这两个在一个页面中启用和禁用。

我很赞同你的建议。

【问题讨论】:

    标签: jsf icefaces


    【解决方案1】:

    使用rendered 属性。它接受一个布尔表达式。向User 实体添加一个方法,例如isAdmin()getRole(),并让rendered 属性对其进行拦截。

    <h:someComponent rendered="#{user.admin}">
        Will be displayed when user.isAdmin() returns true.
    </h:someComponent>
    <h:someComponent rendered="#{user.role != 'ADMIN'}">
        Will be displayed when user.getRole() (String or enum) does not equal ADMIN.
    </h:someComponent>
    

    对于您感兴趣的情况,这里有更多示例如何在 EL 中使用布尔表达式。

    JSP 兼容语法:

    <h:someComponent rendered="#{bean.booleanValue}" />
    <h:someComponent rendered="#{bean.intValue > 10}" />
    <h:someComponent rendered="#{bean.objectValue == null}" />
    <h:someComponent rendered="#{bean.stringValue != 'someValue'}" />
    <h:someComponent rendered="#{!empty bean.collectionValue}" />
    <h:someComponent rendered="#{!bean.booleanValue && bean.intValue != 0}" />
    <h:someComponent rendered="#{bean.enumValue == 'ONE' || bean.enumValue == 'TWO'}" />
    

    与某些XML-sensitive EL 运算符(如&gt;&amp;)的Facelets 兼容语法已更改:

    <h:someComponent rendered="#{bean.booleanValue}" />
    <h:someComponent rendered="#{bean.intValue gt 10}" />
    <h:someComponent rendered="#{bean.objectValue eq null}" />
    <h:someComponent rendered="#{bean.stringValue ne 'someValue'}" />
    <h:someComponent rendered="#{not empty bean.collectionValue}" />
    <h:someComponent rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
    <h:someComponent rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />
    

    【讨论】:

    • JSF2 是否不再允许使用&amp;&amp;,因为它给了我这个The entity name must immediately follow the '&amp;' in the entity reference。但是,如果我使用关键字and,那么它可以工作
    • @Harry:哦,抱歉,那是 JSP 风格。在 XML(XHTML、Facelets)中,您需要转义 XML 实体。 &amp; 就是其中之一。是的,and 是正确的关键字。对于残余,here's an overview.
    • @ThankPharm 抱歉,您的第一条评论是什么意思?不允许使用 && 吗?
    【解决方案2】:

    在 ICEfaces 中用于禁用属性使用的控件:

    <ice:inputText disabled="[true/false]"/>
    

    示例

    我在我的代码中使用了这个:

    <ice:inputText disabled="#{ABMUsuario.accion!='3'}"/>
    

    【讨论】:

      猜你喜欢
      • 2011-04-17
      • 2011-02-03
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 2016-12-24
      • 2011-07-22
      相关资源
      最近更新 更多