我有业务要求在JSF中执行客户特定的验证。这意味着,在同一屏幕上,同一个字段对于一个客户是强制性的,而对另一个客户则不是强制性的。
我正在考虑在jsf中实现自定义验证器并从UIComponent读取字段名称,以便我可以将它们与外部配置文件中的字段进行比较。这些配置文件将具有每个客户可配置的字段。
有没有更好的方法来实现这个?感谢您的意见。
答案 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);
}