转换为long并验证

时间:2012-10-22 22:55:52

标签: validation jsf converter long-integer

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

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

1 个答案:

答案 0 :(得分:1)

您希望使用Long属性而不是String属性来强制JSF / EL自动转换为Long(它具有标准{{1的内置转换) },NumberBoolean类型。)

Enum

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" />

这样你就不需要在bean的action方法中执行任何转换/验证,无论如何这对于它来说都是错误的。您应该使用JSF内置转换器或自定义<h:inputText id="empId" value="#{bean.empId}" required="true" requiredMessage="Please enter employee ID." converterMessage="Please enter digits only." /> <h:message for="empId" /> 进行转换,使用JSF内置验证程序或自定义Converter进行验证。支持bean属性应该已经保持正确的类型,并且支持bean操作方法不应该进行任何转换/验证。

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