如何更改JSF标记属性

时间:2013-12-05 08:33:18

标签: jsf jsf-2 primefaces

我有一个Primefaces数据表。

<p:dataTable id="updateStaffTable" var="staff" value="#{staffBean.staffs}"  
                         selection="#{staffBean.selectedStaff}" selectionMode="single"
                         paginator="true" lazy="true" styleClass="dataTableSize" rows="10" >
<p:ajax event="rowSelect" listener="#{staffBean.onRowSelect}"   
                    update=":updateStaffForm:updateStaffPanelGrid" oncomplete="PF('updateStaffDialog').show()" /> 
</p:dataTable>

现在,如果不允许用户,我想禁用选择属性。我可以通过编程方式检查用户的权限。我也有一个bean来检查,但我不能在这里使用render属性。我怎么能这样做,还是有其他好方法才能做到这一点?

1 个答案:

答案 0 :(得分:3)

只需像使用其他属性一样在属性中使用EL。您可以使用条件运算符?:在EL中执行if-else。

E.g。仅当用户具有角色single时才设置为ADMIN

selectionMode="#{request.isUserInRole('ADMIN') ? 'single' : null}"

至于为此提出binding的其他答案,只要在视图方面可以实现功能,建议使用{{1>} 。如果你真的需要从bean控制它,你甚至可以只做binding。尝试尽可能避免selectionMode="#{bean.selectionMode}"支持bean属性,除非您需要动态填充组件,这些组件由于某些不明原因无法在视图端完成(使用JSTL可以做很多事情)。