1

Web アプリの 1 つで Spring 検証 (JSR 303) を使用しています。ユーザーがデータを送信しても問題はなく、Spring 検証はかなりうまく機能します。しかし、サービスからデータをフェッチして検証する必要があるシナリオがあります。次に、それらをビューにバインドします(フォーム以外の検証)。この場合、@Valid を使用するにはどうすればよいですか、それとも別の方法で行う必要がありますか?

ここにサンプルコードがあります、私は始めました

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView getView(
        @PathVariable("id") final String id, @User user,
        HttpSession session) {

    User user=  getUser();

   BindingResult result = new BeanPropertyBindingResult(user, "user");

   validator.validate(user, result);

   if(result.hasErrors()){
       logger.log(Level.ERROR, "Errors");
   }

  ModelAndView view = new ModelAndView ("home");
  view.addObject("user",user );
  view.addAllObject(result.getModel());

   return view;
4

1 に答える 1

4

私が理解している限りorg.springframework.validation.Validator、コントローラーにデフォルトを挿入する必要があります(@Valid機能する場合は、それを実行できるはずです)

@Autowired
Validator validator;

次のように検証を手動で実行します

User user = ...;
BindingResult result = BeanPropertyBindingResult(user, "user");
validator.validate(user, result);

次のように結果をマージしますModelMap(メソッドの引数として宣言します)

model.addAllAttributes(result.getModel());
于 2012-06-06T17:38:46.833 に答える