Validator
を使用してSpringMVC3.0.2のインターフェイスを使用してフォームを検証していますSimpleFormController
。以下は、を拡張するコントローラークラスSimpleFormController
です。
@SuppressWarnings("deprecation")
final public class Temp extends SimpleFormController
{
public Temp()
{
setCommandClass(ValidationForm.class);
setCommandName("validationForm");
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception
{
ValidationBean validationBean=(ValidationBean) command;
ModelAndView mv=new ModelAndView("Temp", "validationForm", validationBean);
if(errors.hasErrors())
{
System.out.println("error");
}
else
{
System.out.println("name = "+validationBean.getUserName());
}
return mv;
}
@Override
protected ModelAndView showForm(HttpServletRequest request, HttpServletResponse response, BindException errors) throws Exception
{
ModelAndView mv=new ModelAndView("Temp", "validationForm", errors.getTarget());
return mv;
}
}
フォームの検証については疑問の余地はありません。正常に動作します。ここでの唯一の質問は、showForm(...){...}
上記のメソッドを使用すると、JSPページの読み込み時とonSubmit()
メソッドの完了後にこのメソッドが呼び出されるため、エラーメッセージが表示されないことです(この場合、ページは送信をクリックして送信されます) JSPページのボタン)。
送信ボタンをクリックしてページを送信すると、メソッド(メソッドの後に呼び出される)にあるerrors.getTarget()
(またはgetCommand(request)
)コマンドオブジェクトには、ページに表示されるエラーメッセージが含まれていません。コマンドオブジェクト(またはドメインオブジェクト)は、メソッド内のコマンドオブジェクトとは異なります。(したがって、メソッドがコメント化されると、エラーメッセージが表示されます)showForm()
onSubmit()
onSubmit()
showForm()
showForm()
このメソッドを使用して、ページが送信またはロードされたときにデータベースのデータのリストを表示する必要があります。
もちろん、referenceData()
以下に示す方法でうまくいきます。
protected Map referenceData(HttpServletRequest request, Object command, Errors errors) throws Exception
{
Map map=new HashMap();
return map;
}
showForm()
しかし、私はその方法に固執したいと思います。showForm()
フォームの検証中にメソッドを使用しているときにエラーメッセージを表示する公正な方法はありますか?