JSF f:validateLength在转换器之后处理,但之前需要它

时间:2010-02-04 15:20:59

标签: java jsf

我有一个密码输入字段,我有一个md5转换器。 该字段与我的entity.password字段绑定(存储为md5哈希)。

我想在其上设置f:validateLength,因此密码必须具有一定的长度。 问题是“”空字符串也有md5哈希值。验证器不检查实际输入,而是检查转换后的md5散列。

我可以在实际输入上设置验证器,而不是转换后的验证器吗?

<ice:inputSecret value="#{user.employer.user.password}" converter="md5hashconverter">
 <f:validateLength minimum="3" maximum="15"/>
</ice:inputSecret>

谢谢

修改 我正在使用Hibernate,而我的支持bean也是“模型”托管bean。我坚持使用EntityManager。

1 个答案:

答案 0 :(得分:1)

你不能。

对我来说,这也不是真正做哈希的地方。这不是“转换”(应该是双向的)。而是在数据访问层,在INSERT之前自己做,或者只是抓住DB的内置函数。其中大多数都提供了MD5()函数,您可以在查询中使用INSERT INTO user (name, pass) VALUES (?, MD5(?))

编辑:根据更新,您使用的是Hibernate JPA。在这种情况下,您可以使用JPQL来激活内部带有MD5()函数的“普通”保存查询,或者抓取EntityListenerguide here)并对@PrePersist执行操作也许@PreUpdate