1

シナリオを説明するためだけにこのメソッドを作成しました。モデル オブジェクト内のユーザー ドメイン オブジェクトを評価したいと思います。

戻りオブジェクトとメソッド引数を評価できることはわかっています。しかし、モデルオブジェクトで試してみると、次のエラーが発生しました。**PostAuthorize / PreAuthorizeでモデルオブジェクトを使用することはできませんか? **

エラー

[リクエストの処理に失敗しました。ネストされた例外は java.lang.IllegalArgumentException: Failed to evaluate expression '#model.user.userName != 'ramesh''] 根本原因 org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 7): フィールドまたはプロパティタイプ「org.springframework.validation.support.BindingAwareModelMap」のオブジェクトに「ユーザー」が見つかりません

コード

@PostAuthorize("#model.user.userName != 'ramesh'")
@RequestMapping(value="/createusername", method = RequestMethod.GET)
public String getCreateUserNamePage(ModelMap model) {
    User user = new User();
    String username = SecurityContextHolder.getContext().getAuthentication().getName();
    if(username!=null)
        user = customUserDetailsService.getUserByUsername(username);
    else
        user.setUserName(username);
    model.put("user", user);
    return "createusername";
}
4

2 に答える 2

3

モデル オブジェクトには「user」というプロパティがありません。代わりに、次のようにアクセスしていますmodel.put("user", user)。モデル (ModelMap) はある種のマップのようです。

伸びjava.util.Mapますか?
その場合、次のようなスペル マップ構文を使用できます。#model[user].username

于 2012-10-25T14:15:40.850 に答える