0

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

4

2 回答 2

0

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

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

于 2012-10-17T14:50:46.027 回答
0

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

于 2012-12-24T09:31:02.340 回答