将POJO传递给spring MVC控制器的最佳方法

时间:2015-11-28 12:03:42

标签: java jquery spring-mvc

我现在已经完成了一些MVC控制器并使用spring form标签来回传递数据但我现在意识到我的实际理解有点薄。在我目前的情况下,我实际上只能将响应作为url参数发送,但是大约有15个,如果可能的话,我更愿意将它作为pojo发送。

我的实际问题是...是否可以在jsp中设置spring样式模型属性而不传入属性并且不使用表单标签?

例如,

的内容
//Pojo 
 Class personclass 
 {
   private String name + getters and setters
   private String address + getters and setters
   private String phone + getters and setters
   ...
  }

 ////first mvc call
 @RequestMapping ("/")
 Public ModelAndView LandingPage()
 {
   // no mention of Person pbject
   Return mandvobject;
  }

  //jsp page
  //This is the question!
  SET ModelAttribute that wasn't passed in to the page
  personclass = X 
  //New MVC call without a submit 
   window.open ("/NewMVCCall")


  //New mvc call
  @RequestMapping ("/NewMVCCall")
  Public void newMVCPage(@ModelAttribute ("pc") personclass pc, Model model)
  {
     //process pc object
   }

或者我错过了这一点,我必须将其作为json字符串参数发送?抱歉,我对此的掌握非常简陋,我不确定我是否可以很容易地设置我自己的http表单内容,或者是否因为我到目前为止使用了Spring表单对象,所以我还没有意识到正在发生的事情的复杂性在幕后(即表格标签将pojos转换为json等)?

非常感谢有人有时间让我走上正确的道路......

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了您的问题,但您可以将模型链接到您的控制器,而无需在每次需要时手动将其传递给视图,Spring将负责:

控制器中的

public class MyController{

      @ModelAttribute("pc")
      public PersonneClass getPersonnelClass(){
        return new PersonneClass();
      }

     @RequestMapping ("/NewMVCCall")
     Public void newMVCPage(@ModelAttribute ("pc") personclass pc, Model model)
     {
        //process pc object
     }
  //other methods

}

在命名类时遵循java约定是一种很好的做法      (personneClass)必须以大写(PersonneClass)开头。