Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;“命令”;spring MVC 3中的modelName魔术值_Java_Spring_Spring Mvc - Fatal编程技术网

Java &引用;“命令”;spring MVC 3中的modelName魔术值

Java &引用;“命令”;spring MVC 3中的modelName魔术值,java,spring,spring-mvc,Java,Spring,Spring Mvc,如何删除“command”modelName参数的一些“magic value”印象来创建ModelAndView 例如: @RequestMapping(value = "/page", method = GET) public ModelAndView render() { return new ModelAndView("page", "command", new MyObject()); } 一个希望是使用弹簧常数,例如 new ModelAndView("page", DEF

如何删除
“command”
modelName参数的一些“magic value”印象来创建ModelAndView

例如:

@RequestMapping(value = "/page", method = GET)
public ModelAndView render() {
    return new ModelAndView("page", "command", new MyObject());
}
一个希望是使用弹簧常数,例如

new ModelAndView("page", DEFAULT_COMMAND_NAME, new MyObject());
我在spring-webmvc-3.0.5源jar的以下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
    已弃用
  • 我们不使用
    MultiActionController
    FormTag

    • 我不会使用默认名称。如果对象是
      用户
      调用它
      用户
      ,如果对象是
      项目
      调用它
      项目
      。如果您需要一个默认值(例如,对于通用框架),请定义您自己的常量。

      当您在jsp spring标记上使用时

      因为spring框架需要一个名为“command”的对象。 用于绑定命令对象的默认命令名:“command”。 将实例化的命令类绑定到请求时要使用的名称

      但是当您使用html表单
      时,您可以编写:

      @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>
      
      
      名称
      年龄
      
      @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>