JSF中的客户特定验证

时间:2015-03-19 15:16:32

标签: java-ee jsf-2.2

我有业务要求在JSF中执行客户特定的验证。这意味着,在同一屏幕上,同一个字段对于一个客户是强制性的,而对另一个客户则不是强制性的。

我正在考虑在jsf中实现自定义验证器并从UIComponent读取字段名称,以便我可以将它们与外部配置文件中的字段进行比较。这些配置文件将具有每个客户可配置的字段。

有没有更好的方法来实现这个?感谢您的意见。

1 个答案:

答案 0 :(得分:1)

我对多客户应用程序有同样的要求:管理员站点上的客户定义哪些字段在指定页面上是必需的(在持卡人站点上)。标记("必须"或"不是强制性的")存储在DB中(在所有客户通用的配置表中)。检查页面上的必填字段是

<h:outputLabel for="firstname" value="#{msg.firstname}">
    <h:outputText value=" *" class="required"
        rendered="#{profileAction.isRequired('PF_FIRSTNAME')}" />
</h:outputLabel>
<h:inputText id="firstname" label="#{msg.firstname}"
    value="#{registrationForm.firstName}"
    size="40" maxlength="40" autocomplete="off"
    required="#{profileAction.isRequired('PF_FIRSTNAME')}" />

其中检查方法是

public boolean isRequired(String attributeName) {
    return profiler.isFieldRequired(customerFromSession, attributeName);
}