我正在研究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的未来版本会有任何维护问题吗?有没有更好的办法?感谢您的任何意见。
答案 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