1

我有一个带有 ICEfaces 组件的表单的 Facelets 页面。empId是一个长类型属性,必须检查 bean 中是否为 null。它采用String形式,我将其转换为 long 类型Long.valueof(empId).longValue();,以便将其传递给 DAO 以检查 DB 列。

这是我们应该做的方式吗?或者还有其他方法吗?

4

1 回答 1

1

您想使用Long属性而不是String属性来强制Long通过 JSF/EL 自动转换为(即标准和类型的内置Number转换)BooleanEnum

private Long empId;

<h:inputText value="#{bean.empId}" />

您想使用required属性来验证所需的输入。

<h:inputText value="#{bean.empId}" required="true" />

可以使用 显示任何转换或验证错误消息<h:message>

<h:inputText id="empId" value="#{bean.empId}" required="true" />
<h:message for="empId" />

如有必要,您可以按如下方式更改转换和所需消息:

<h:inputText id="empId" value="#{bean.empId}" required="true" 
    requiredMessage="Please enter employee ID." 
    converterMessage="Please enter digits only." />
<h:message for="empId" />

这样你就不需要在 bean 的 action 方法中执行任何转换/验证,无论如何这都是错误的地方。您应该使用 JSF 内置转换器或自定义Converter转换和 JSF 内置验证器或自定义Validator进行验证。支持 bean 属性应该已经拥有正确的类型,支持 bean 操作方法不应该进行任何转换/验证。

我只是想知道用于检查列的 DAO 方法调用是否不能由 custom 更好地处理Validator,但这完全取决于问题中不清楚的具体功能要求。

于 2012-10-22T23:04:02.230 回答