【发布时间】:2011-03-28 20:01:22
【问题描述】:
我正在寻找如何根据用户登录来启用和禁用 icefaces 组件? 例如:
如果以管理员身份登录我需要启用更多组件并以用户身份登录,禁用某些组件以及在一个页面中添加一些其他组件?如何在jsf/icefaces中实现这个功能?
这两个在一个页面中启用和禁用。
我很赞同你的建议。
【问题讨论】:
我正在寻找如何根据用户登录来启用和禁用 icefaces 组件? 例如:
如果以管理员身份登录我需要启用更多组件并以用户身份登录,禁用某些组件以及在一个页面中添加一些其他组件?如何在jsf/icefaces中实现这个功能?
这两个在一个页面中启用和禁用。
我很赞同你的建议。
【问题讨论】:
使用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 运算符(如> 和&)的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'}" />
【讨论】:
&&,因为它给了我这个The entity name must immediately follow the '&' in the entity reference。但是,如果我使用关键字and,那么它可以工作
& 就是其中之一。是的,and 是正确的关键字。对于残余,here's an overview.
在 ICEfaces 中用于禁用属性使用的控件:
<ice:inputText disabled="[true/false]"/>
示例
我在我的代码中使用了这个:
<ice:inputText disabled="#{ABMUsuario.accion!='3'}"/>
【讨论】: