名の部分を持つカスタム ユーザー詳細オブジェクトがあります。以下のユーザー名は機能しますが、2 番目のようなものが機能するようにしたいと考えています。このカスタム プロパティにアクセスするにはどうすればよいですか?
<security:authentication property="principal.username" />
<security:authentication property="principal.firstname" />
名の部分を持つカスタム ユーザー詳細オブジェクトがあります。以下のユーザー名は機能しますが、2 番目のようなものが機能するようにしたいと考えています。このカスタム プロパティにアクセスするにはどうすればよいですか?
<security:authentication property="principal.username" />
<security:authentication property="principal.firstname" />
上記を試してみて、うまくいかなかったと思います。
カスタム ユーザー詳細クラスをチェックして、'firstname' プロパティの getter メソッドと setter メソッドの大文字化が正しいことを確認してください。
私のために働きます。これが私のテストコードです:-
CustomUserDetailsクラス
public class CustomUserDetails implements UserDetails {
public String getFirstName() {
return "hello";
}
...
}
JSPのカスタムタグ
次のタグはを返しますhello
。
<security:authentication property="principal.firstName" />
ちなみに、getFirstName()
匿名クラスに入れていないことを確認してください。匿名クラスは機能しません。
私がここで言おうとしているのは、これをしないでください:-
...
return new UserDetails() {
// adding extra method here will not work
public String getFirstName() {
return "hello";
}
public String getUsername() {
return "test";
}
...
};
... これを行う:-
...
// this class implements UserDetails and contains getFirstName()
CustomUserDetails csd = new CustomUserDetails();
csd.set...(...)
...
return csd;