gpt4 book ai didi

java - JSF f :validateLength is processed after the converter, 但之前需要它

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:27 24 4
gpt4 key购买 nike

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

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

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

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

谢谢

编辑:我正在使用 Hibernate,我的支持 bean 也是“模型”管理 bean。我坚持使用 EntityManager。

最佳答案

你不能。

对我来说,这也不是进行哈希处理的正确位置。这不是“转换”(应该是双向的)。而是在数据访问层执行此操作,要么在 INSERT 之前亲自执行,要么仅通过获取数据库的内置函数来执行。它们中的大多数都提供某种 MD5() 函数,您可以在查询中使用该函数,例如 INSERT INTO user (name, pass) VALUES (?, MD5(?))

编辑:根据更新,您正在使用 Hibernate JPA。在这种情况下,您可以使用 JPQL 触发内部包含 MD5() 函数的“普通”保存查询,或者获取 EntityListener ( guide here ) 并按照 @PrePersist 执行操作,也可能对 @PreUpdate 执行操作。

关于java - JSF f :validateLength is processed after the converter, 但之前需要它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2200785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com