私は春にウェブアプリケーションを作成していますが、フォームの検証に問題があります。スプリングフォーム検証の問題
@RequestMapping(params = "action=gestprodotti")
public ModelAndView doGestProdotti(
@RequestParam(value = "page", required = false, defaultValue = "0") int page,
@RequestParam(value = "activity", required = false) String activity,
@ModelAttribute Prodotto prod, BindingResult bindresult,
HttpSession session) throws Exception {
コントローラが注釈されているとされていません。
は基本的に私は、フォームの処理方法でコントローラを持っている...それは私がいることを初めて使用するときですので、私はまだそれを理解する必要があります何かを拡張する。後者の方法では、フォームにバインドされたオブジェクトを受け取った後、私は:私は手動でバリデータを呼び出し、同じフォームページ(のModelAndView結果)をお返しすることを意味しValidator valid = activityHandler.getValidator();
valid.validate(backingObject, bindresult);
if (bindresult.hasErrors()){
return handleRequest(action, ACTIVITY_NEW_ITEM, jspComponent,
page, itemId, backingObject, bindresult, appstatus);
}
。
バリコード:
public static final class ProdottoValidator implements Validator{
@Override
public boolean supports(Class<?> other) {
return Prodotto.class.isAssignableFrom(other);
}
@Override
public void validate(Object obj, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "codice", "Il codice è richiesto");
}
}
と関連するJSPコード:
<td colspan="2" align="left">Codice<form:input id="code"
path="codice" /><form:errors path="codice" /></td>
結合のために正常に動作しますが、私はすべてのエラーを得ることはありません。私はmessages.propertiesファイルを作成しませんでしたが、とにかく何かが見えるはずです。 bindresult.hasErrors()
がtrueになるため、エラーが検出されますが、レンダリングされたhtmlはエラーの代わりに何も表示されません。私は構成など何かを見逃していますか?それは動作しないmessages.propertiesファイルがないためですか?
デフォルトは "docs"と同じように "command"でなければなりません。あなたが言うようにprodottoを使用すると、バインディングエラーで終了します。あなたはこれについて確信を持っていますか? – gotch4
@ gotch4:更新されました。 – axtavt
@ModelAttributeはname属性を取得しません。エラーが発生します。フォームのプロダクト:フォームがバインディングを壊し、例外が発生します... – gotch4