0

私はSpring 3 mvcで作業しており、検証を行う必要があります。

実際、バリデーターが機能しておらず、その理由がわかりません。

次の構成を行います。

pom.xml で、次の依存関係を追加します。

 <dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-validator</artifactId>
     <version>4.3.0.Final</version>
 </dependency>

productsForm.jsp を実行して、次のタグを追加します。

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

タグを追加します: <form:form><form:input>.

コントローラーに次のように記述します。

//Here is to show the form

@RequestMapping(value = "Products", method = RequestMethod.GET)
public String ManagmentHome(Map model2,Model model,HttpServletRequest request){
    Product validationForm=new Product();  
    model2.put("validationForm",validationForm);
    return "productsForm";
}

// Here is to process the form

public String addProduct(@RequestParam String product,  BindingResult result, Map model2,Model model, HttpServletRequest request,@Valid Product validationForm) {

    if(result.hasErrors()){
        return "productsForm";
     }
}

パラメータを取得するためにAjaxを使用しています。

バリデーターを使用しない場合は正常に動作しますが、バリデーターを使用すると動作せず、フォームを送信すると 400 (Bad Request) が表示されます。

何が問題なのかわかりません。手伝って頂けますか?例はありますか?

4

1 に答える 1

0

あなたのコントローラーはAjaxヘッダー付きの@RequestMappingを持っているべきではありませんか?

たとえば、コントローラーでは:

 public static final String AJAX = "X-Requested-With=XMLHttpRequest";
 @RequestMapping(value = "/url", 
  method = RequestMethod.GET,headers=  AJAX)
  public String someMethod(argument1, ....){...}

また、リクエストがコントローラーによってマップされるかどうかを確認するために、ブレークポイントを設定することをお勧めします。

于 2012-07-06T22:22:15.343 に答える