SpringMVCフォームの提出パラメータが不整合でエラーが発生しました.


SpringMVCの下で、フォームを提出すると400のエラーが発生します.
description The request sent by the client was syntactically incorrect.
 
ネット上のまとめによると、次のような問題が原因かもしれません.
 
1.パラメータ指定問題Controllerにパラメータが定義されていますが、フォーム内にはこのフィールドが定義されていません.
@SuppressWarnings("deprecation")
@RequestMapping("/hello.do")
public String hello(HttpServletRequest request,HttpServletResponse response,
		@RequestParam(value="userName") String user
){
	request.setAttribute("user", user);
	return "hello";
}
 
ここでは、フォーム内でuserNameの属性を提供しなければなりません.指定したくないなら、この属性のデフォルト値defaultValue=":
@SuppressWarnings("deprecation")
@RequestMapping("/hello.do")
public String hello(HttpServletRequest request,HttpServletResponse response,
		@RequestParam(value="userName",defaultValue="  ") String user
){
	request.setAttribute("user", user);
	return "hello";
}
 
このパラメータは不必要なrequired=falseであることも指定できます.
@SuppressWarnings("deprecation")
@RequestMapping("/hello.do")
public String hello(HttpServletRequest request,HttpServletResponse response,
		@RequestParam(value="userName",required=false) String user
){
	request.setAttribute("user", user);
	return "hello";
}
 
2.アップロード問題
アップロードファイルのサイズがSpringアップロードの制限を超えています.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
    <!--            1024  =1K,   10K -->  
    <property name="maxUploadSize">  
        <value>10240</value>  
    </property>
    <property name="defaultEncoding">  
           <value>UTF-8</value>  
    </property>  
</bean>
 
私達の工程ではこの問題が起きましたが、実際の例では大きさを超えると直接エラーが発生します.
 
3.時間変換問題
時間の切り替えが原因だというネットユーザーの話もありますが、実際に操作してみたら、エラーを発見しました.
The server encountered an internal error that prevented it from fulfilling this request
 
ここでもついでに言いますが、もしあなたのControllerに時間の対象が必要なら、コードは以下の通りです.
@SuppressWarnings("deprecation")
@RequestMapping("/hello.do")
public String hello(HttpServletRequest request,HttpServletResponse response,
		@RequestParam(value="userName",defaultValue="  ") String user,
		Date dateTest
){
	request.setAttribute("user", user);
	System.out.println(dateTest.toLocaleString());
	return "hello";
}
 
ホームページで実際にくれたのは
<input type="text" name="dateTest" value="2015-06-07">
 
ここではControllerにコンバータを追加する必要があります.
@InitBinder  
public void initBinder(WebDataBinder binder) {  
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  
    dateFormat.setLenient(false);  
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));  
}
  
ITEYEサイトでjava小強のオリジナルを見てください.ありがとうございます.http://cuisuqiang.iteye.com/ !
自己ブログアドレス:http://www.javacui.com/、内容はITEYEと同期します.