根据用户角色在用户界面中隐藏/隐藏/屏蔽机密信息

时间:2012-10-17 11:13:25

标签: primefaces composite-component

我正在研究Primefaces。在显示客户信息时,对于某些客户,某些字段应保密,并应显示为XXXXXXXXXX,对于某些客户,这些字段可以显示该值。

我想过有一个复合组件可以处理渲染和值对象。根据客户,我将显示带有静态文本“XXXXXXXXXX”的outputText和带有绑定到支持bean属性的值的inputText。

//Composite component code
<composite:interface>
    <composite:attribute name="render" />
    <composite:attribute name="value" />
</composite:interface>
<composite:implementation>
    <h:outputText value=" XXXXXXXXXX " rendered="#{cc.attrs.render}" />
    <p:inputText value="#{cc.attrs.value}" rendered="#{!cc.attrs.render}">
        <f:convertNumber type="currency" />
    </p:inputText>
</composite:implementation>

//Using composite component
<util:input id="accountBalance" render="#{myBean.vipCustomer}" value="#{ myBean.value}" />

//myBean    
public class Account implements Serializable {
    private double value;
    private boolean vipCustomer = false;
// getter's and setter's goes here.....
}

这种安全方法吗?因为JSF或Primefaces的未来版本会有任何维护问题吗?有没有更好的办法?感谢您的任何意见。

2 个答案:

答案 0 :(得分:0)

我想我会尝试只使用一个组件而不是2来完成此操作。例如:<p:inputText value="#{cc.attrs.render ? cc.attrs.value : 'XXXXX'}"> <f:convertNumber type="currency" /> </p:inputText>

在您的bean中,在设置新值之前检查“XXXXX”。

答案 1 :(得分:0)

使用preRenderView侦听器将机密字段的值设置为XXXXXXXXXX