【问题标题】:Best way to pass a POJO to a spring MVC controller将 POJO 传递给 Spring MVC 控制器的最佳方法
【发布时间】:2015-11-28 12:03:42
【问题描述】:

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

我的实际问题是……是否可以在没有传入属性且不使用表单标签的情况下在 jsp 中设置弹簧样式模型属性?

例如,类似于

//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 等等)?

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

【问题讨论】:

    标签: java jquery spring-mvc


    【解决方案1】:

    我不确定我是否正确理解了您的问题,但您可以将模型链接到您的控制器,而无需在每次需要时手动将其传递给视图,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) 开头。

    【讨论】:

    • 我想这就是我要找的,我之前没见过@modelAttribute get 函数。我认为我会将 PersonClass 的页面导入到 jsp 页面中。很抱歉问,然后我将如何将它添加到 window.open ("/NewMVCCall") ?它是参数还是 还是我需要编辑 httpRequest/Response ?
    • @gringogordo 我认为您正在寻找的是对 /NewMVCCall 的 ajax 调用,在设置了 from 的属性之后,您可以使用 ajax 提交它。这就是你要找的吗?
    • 是的,我想就是这样,谢谢!我正在考虑在没有表单的情况下进行操作(jquery 对话框中的一系列问题),但我错过了如何在没有表单的情况下发送数据。如果我用modelattribute personclass 放入一个表单,大概我可以手动设置personclass 属性(而不是数据绑定),然后,正如你所说,用ajax 发布表单。你认为这是对的吗? (该表单将自动合并到 $.ajax({type: "POST", url... call. ) 中?抱歉占用您这么多时间,我已经在房子周围转了一圈,我很抱歉试图确保我现在拥有它......
    猜你喜欢
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    相关资源
    最近更新 更多