현재 Apache Tapestry 5.3.1에 다음과 같은 문제점이 있습니다. 사용자가 프로필 세부 정보를 편집하고 암호를 변경할 수 있어야합니다. 데이터에는 "사용자"엔티티가 있습니다.Tapestry 5 : 암호 필드의 값이 변수에 바인드되지 않았습니다.
암호가 항상 변경되는 소금으로 암호화되어 저장되므로 (Apache Tynamo 사용) 사용자의 getPassword 메소드를 사용할 수 없습니다. 따라서 passwordValue1 및 passwordValue2라는 두 페이지 속성에 값을 저장하고 나머지 빈을 사용하려고합니다. 유효성 확인시 passwordValue 필드는 모두 무언가를 입력 한 다음 양식을 제출 한 경우에도 null입니다. 이유가 무엇입니까?
<t:beaneditform object="currentUserInfo" add="password1,password2" t:id="registerForm"
exclude="username,password,accountLocked,credentialsExpired">
<p:password1>
<t:label for="password1" >Passwort</t:label>
<t:passwordfield t:id="password1" value="passwordValue1" validate="password"/>
</p:password1>
<p:password2>
<t:label for="password2" >Passwort wiederholen</t:label>
<t:passwordfield t:id="password2" value="passwordValue2" validate="password"/>
</p:password2>
</t:beaneditform>
태피스트리 페이지의 자바 코드 :
@RequiresUser
public class UserDetails {
@InjectPage
private Index index;
@Inject
UserUtility userUtil;
@Inject
private Session session;
@Inject
@Property
@SessionState(create = false)
private User currentUserInfo; //value is set
@Component(id="password1")
private PasswordField password1;
@Component(id="password2")
private PasswordField password2;
@Property
private String passwordValue2;
@Property
private String passwordValue1;
@InjectComponent
private BeanEditForm registerForm;
//...snip....
void onValidate() {
System.out.println("onvalidate");
if (registerForm.getHasErrors()) {
return;
}
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// both passwordValue1 and passwordValue 2 are null here
if ((passwordValue1 == null && !("".equals(passwordValue1))
|| !passwordValue1.equals(passwordValue2))) {
registerForm.recordError(password1, "Passwords must match");
registerForm.recordError(password2, "Passwords must match");
}
}
시간을내어 주셔서 감사합니다. :) – user3001