代码之家  ›  专栏  ›  技术社区  ›  Michael Bavin

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

  •  1
  • Michael Bavin  · 技术社区  · 16 年前

    我有一个密码输入字段,上面有一个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。我坚持与实体经理合作。

    1 回复  |  直到 16 年前
        1
  •  1
  •   BalusC    16 年前

    你不能。

    对我来说,这也不是真正适合做散列的地方。这不是“转换”(应该是双向的)。而是在数据访问层上进行,或者在 INSERT 或者只是通过获取数据库的内置函数。它们中的大多数提供了 MD5() 您可以在查询中使用的函数 INSERT INTO user (name, pass) VALUES (?, MD5(?)) .

    编辑 :根据更新,您使用的是Hibernate JPA。在这种情况下,您可以使用jpql启动“plain”保存查询 Md5() 内部函数,或获取 EntityListener ( guide here 并采取行动 @PrePersist 也许还 @PreUpdate .