Validation 转换为long和validate

Validation 转换为long和validate,validation,jsf,converter,long-integer,Validation,Jsf,Converter,Long Integer,我有一个Facelets页面,其中有一个带有ICEfaces组件的表单empId是一个长类型属性,如果在bean中为null或不为null,则必须检查该属性。它在表单中被视为String,我正在使用long.valueof(empId.longValue())将其转换为long类型以便将其传递给DAO以检查DB列 我们应该这样做吗?或者还有其他方法吗?您希望使用Long属性而不是String属性来强制JSF/EL将Long自动转换为(即标准Number、Boolean和Enum类型的内置转换)

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


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

您希望使用
Long
属性而不是
String
属性来强制JSF/EL将
Long
自动转换为
(即标准
Number
Boolean
Enum
类型的内置转换)

可以使用
显示任何转换或验证错误消息

<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内置转换器或自定义
转换器进行转换,使用JSF内置验证器或自定义
验证器进行验证。backingbean属性应该已经包含正确的类型,并且backingbean操作方法不应该进行任何转换/验证


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

您希望使用
Long
属性而不是
String
属性来强制JSF/EL自动转换为
Long
(它具有标准
Number
Boolean
Enum
类型的内置转换)

可以使用
显示任何转换或验证错误消息

<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内置转换器或自定义
转换器进行转换,使用JSF内置验证程序或自定义
验证程序进行验证。支持bean属性应该包含right类型已存在,并且支持bean操作方法不应执行任何转换/验证

我只是想知道,如果DAO方法调用来检查列,那么定制的
验证器是否能够更好地处理该方法,但这完全取决于具体的功能需求,这在问题中并不清楚

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