2010-02-04 52 views
1

我有一个密码输入字段,其中有一个md5转换器。 该字段与我的entity.password字段绑定(即存储为md5散列)。JSF f:validateLength在转换器之后进行处理,但之前需要它

我想设置一个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

你不能。

对我来说,这也不是真正做散列的地方。这不是一个“转换”(这应该是2路)。而是在数据访问层执行操作,或者在INSERT之前执行,或者只是通过获取数据库的内置函数。他们中的大多数提供了MD5()功能,您可以在您的查询中使用​​。

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

+0

谢谢你的回答,一如既往BalusC :) 我编辑我的帖子,所以你也知道我是如何坚持。我会重新考虑我在哪里做散列。在二传手里面会是不好的设计? – 2010-02-04 15:36:42

相关问题