我有一个带有 ICEfaces 组件的表单的 Facelets 页面。empId
是一个长类型属性,必须检查 bean 中是否为 null。它采用String
形式,我将其转换为 long 类型Long.valueof(empId).longValue();
,以便将其传递给 DAO 以检查 DB 列。
这是我们应该做的方式吗?或者还有其他方法吗?
我有一个带有 ICEfaces 组件的表单的 Facelets 页面。empId
是一个长类型属性,必须检查 bean 中是否为 null。它采用String
形式,我将其转换为 long 类型Long.valueof(empId).longValue();
,以便将其传递给 DAO 以检查 DB 列。
这是我们应该做的方式吗?或者还有其他方法吗?
您想使用Long
属性而不是String
属性来强制Long
通过 JSF/EL 自动转换为(即标准和类型的内置Number
转换)Boolean
。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" />
如有必要,您可以按如下方式更改转换和所需消息:
<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
,但这完全取决于问题中不清楚的具体功能要求。