1

私の Roo 生成 (Web MVC、Hibernate) の Person クラスには、私が追加した @PreUpdate @PrePersist メソッドがあり、ユーザー データをデータベースに保存する前にパスワードを暗号化するために使用されます。このメソッドは、パスワードと passwordConfirmation (@Transient) フォーム フィールドを比較し、それらが等しい場合、パスワードを暗号化します。create.jspx では、すべて正常に動作します。しかし、update.jspx は passwordConfirmation フォームの値を Person.passwordConfirmation に渡しません。どこが間違っていますか?

update.jspx :

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" 
xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" 
xmlns:jsp="http://java.sun.com/JSP/Page" 
xmlns:spring="http://www.springframework.org/tags" version="2.0">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <jsp:output omit-xml-declaration="yes"/>
    <form:update id="fu_ru_dp_person_domain_Person" 
    idField="idperson" modelAttribute="person" 
    path="/persons" 
    versionField="none" z="Qhcf0JCeZUC6aMA3/6/5aDbQ13g=">
...
        <field:input field="password" id="c_ru_dp_person_domain_Person_password" required="true" type="password"  z=""/>
        <field:input field="passwordConfirmation" id="c_ru_dp_person_domain_Person_passwordConfirmation" required="true" type="password" z=""/>

create.jspx:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:c="http://java.sun.com/jsp/jstl/core" 
xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" 
xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" 
xmlns:jsp="http://java.sun.com/JSP/Page" 
xmlns:spring="http://www.springframework.org/tags" version="2.0">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <jsp:output omit-xml-declaration="yes"/>
    <form:create id="fc_ru_dp_person_domain_Person" 
    modelAttribute="person" path="/persons" 
    render="${empty dependencies}" z="+YEbyTqiV2xT0u7rtPVJy3fd4Zw=">
        ...
        <field:input field="password" id="c_ru_dp_person_domain_Persons_password" required="true" type="password" z=""/>
        <field:input field="passwordConfirmation" id="c_ru_dp_person_domain_Person_passwordConfirmation" required="true" type="password" z="user-managed"/>

Person.java :

 @PrePersist
    @PreUpdate
    protected void encryptPassword() {
        String pwd = this.getPassword(), pwd2 = this.getPasswordConfirmation();
        if (pwd2 != null && pwd.equals(pwd2)) {
            this.setPassword(passwordEncoder.encodePassword(pwd, null));
        }
    }
4

0 に答える 0