2011-07-22 13 views
4

"command" modelNameパラメータの「マジックバリュー」インプレッションの一部を削除してModelAndViewを作成するにはどうすればよいですか?「コマンド」modelName春のMVC 3のマジック値

例:

@RequestMapping(value = "/page", method = GET) 
public ModelAndView render() { 
    return new ModelAndView("page", "command", new MyObject()); 
} 

一つの希望は、

new ModelAndView("page", DEFAULT_COMMAND_NAME, new MyObject()); 

としてばね定数を使用することであったIは、ばねwebmvc-3.0.5ソースジャーの3次のクラスで"command"が見つかりました:

$ ack-grep 'public.*"command"' 
org/springframework/web/servlet/mvc/BaseCommandController.java 
140: public static final String DEFAULT_COMMAND_NAME = "command"; 

org/springframework/web/servlet/mvc/multiaction/MultiActionController.java 
137: public static final String DEFAULT_COMMAND_NAME = "command"; 

org/springframework/web/servlet/tags/form/FormTag.java 
56: public static final String DEFAULT_COMMAND_NAME = "command"; 

問題がある:

  • BaseCommandControllerは、私たちは、私はデフォルトの名前を使用することはありませんMultiActionControllerFormTag

答えて

10

次のように記述する必要があります。

@RequestMapping(value = "/car", method = RequestMethod.GET) 
public ModelAndView car() { 
return new ModelAndView("car", "command", new Car()); 
} 

Springフレームワークが名前 "コマンド" を持つオブジェクトを想定しているため。 コマンドオブジェクトのバインドに使用されるデフォルトのコマンド名:「コマンド」。 インスタンス化されたコマンド・クラスを要求にバインドするときに使用するこの名前。

http://static.springsource.org/spring/docs/1.2.9/api/org/springframework/web/servlet/mvc/BaseCommandController.html

しかし、あなたは、htmlフォーム<form>を使用するときは、書くことができます。

@RequestMapping(value = "/car", method = RequestMethod.GET) 
public ModelAndView car() { 
return new ModelAndView("car", "YOUR_MODEL_NAME", new Car()); 
} 

しかし、あなたのページを

<form method="POST" action="../App/addCar"> 
<table> 
<tr> 
    <td><form:label path="YOUR_MODEL_NAME.brand">Name</form:label></td> 
    <td><form:input path="YOUR_MODEL_NAME.brand" /></td>   
</tr> 
<tr> 
    <td><form:label path="YOUR_MODEL_NAME.year">Age</form:label></td> 
    <td><form:input path="YOUR_MODEL_NAME.year" /></td> 
</tr>  
<tr> 
    <td colspan="2"> 
     <input type="submit" value="Submit" />    
    </td> 
</tr> 
</table> 
</form> 
0

を使用していない

  • 推奨されていません。オブジェクトがUserの場合はuserItemの場合はitemとなります。デフォルトが必要な場合(たとえば、汎用フレームワークの場合)は、独自の定数を定義します。あなたは、JSPバネタグ<form:form>

    <form:form method="POST" action="../App/addCar"> 
    <table> 
    <tr> 
        <td><form:label path="brand">Name</form:label></td> 
        <td><form:input path="brand" /></td>   
    </tr> 
    <tr> 
        <td><form:label path="year">Age</form:label></td> 
        <td><form:input path="year" /></td> 
    </tr>  
    <tr> 
        <td colspan="2"> 
         <input type="submit" value="Submit" />    
        </td> 
    </tr> 
    </table> 
    </form:form> 
    

    に使用する場合