欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring MVC參數自動綁定List的解決方法

 更新時間:2017年12月10日 16:13:45   作者:weechang  
這篇文章主要為大家詳細介紹了Spring MVC參數自動綁定List的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近遇到一個問題,在項目中需要傳入一組對象。以前都只遇到過傳入一個對象、多個對象或者一組數組的情況。很少遇到傳入一組對象的情況。所以遇到這個問題的時候感覺有點棘手。本以為用這樣的方法就能解決的。

@RequestMapping("save1")
public void save1(Plan plan, List<PlanItem> planItems, HttpServletResponse response) {
  //TODO more...
  addMessage(response, MESSAGE_TYPE_SUCCESS, null, MESSAGE_SUCCESS);
}

但是后來發(fā)現自己太傻太天真。這樣的方式根本就綁定不了參數。有人說spring相較于struts追求了性能就必定要犧牲一部分東西。但是我對于spring和struts并沒有什么研究,只是當一個工具再用而已。所以,我真的不知道為什么。扯遠了,回到正題上。網上還有其他的解決方案。就是采用這種方式

public class PersonList { 
    
  private List<Person> person; 
  
  public List<Person> getPerson() { 
    return person; 
  } 
  
  public void setPerson(List<Person> person) { 
    this.Person= person; 
  } 
  
} 

 controller里:

@RequestMapping(value = "xxx", method = RequestMethod.POST)
  public void test(PersonList person) {
    //遍歷person 
    }
}     

頁面要這樣寫:

<form id="form" action="test/test.do" method="post">
<input type="text" name="person[0].username" value="jobs"/>
<input type="text" name="person[0].age" value="55"/><br/>
<input type="text" name="person[1].username]" value="jim"/>
<input type="text" name="person[1].age" value="21"/><br/>
<input type="submit">
<form>

但是這種方法我試了,還是不行。不曉得是我太蠢還是為什么。

幾經周折找到了另外一種解決方案。將list對象的json字符串傳入后臺。后臺接收到參數后。再將json轉為對象。前端代碼就免了,后臺代碼如下。

@RequestMapping("save")
public void save(Plan plan, String planItemJson, HttpServletResponse response) {
  List<PlanItem> parseArray = JSON.parseArray(planItemJson, PlanItem.class);
  //TODO what u want
  addMessage(response, MESSAGE_TYPE_SUCCESS, null, MESSAGE_SUCCESS);
}

但是這樣有一個小問題,就是json字符串,會被前段自動在key的地方加上雙引號。導致后臺解碼的時候,將雙引號轉義為“&quot;”所以還需要將“&quot;”轉為雙引號。即,最終代碼為

@RequestMapping("save")
public void save(Plan plan, String planItemJson, HttpServletResponse response) {
  planItemJson = planItemJson.replaceAll("&quot;","\"");
  List<PlanItem> parseArray = JSON.parseArray(planItemJson, PlanItem.class);
  //TODO what u want
  addMessage(response, MESSAGE_TYPE_SUCCESS, null, MESSAGE_SUCCESS);
}

經測試,該方法對于list對象里面再包含list對象也是一樣起作用的。

PS:為了提高程序健壯性,可以在轉義JSON對象之后,對json進行校驗,這樣就避免了json轉java對象出錯的情況。

或者采用更加暴力的方式,在json轉list的時候進行try catch操作。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解Spring如何整合Mybatis

    詳解Spring如何整合Mybatis

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著Spring如何整合Mybatis展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Action訪問Servlet的API的簡單實例

    Action訪問Servlet的API的簡單實例

    下面小編就為大家?guī)硪黄狝ction訪問Servlet的API的簡單實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • springboot?自定義啟動器的實現

    springboot?自定義啟動器的實現

    本文主要介紹了springboot?自定義啟動器的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 淺析Java內存模型與垃圾回收

    淺析Java內存模型與垃圾回收

    下面小編就為大家?guī)硪黄獪\析Java內存模型與垃圾回收。小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-05-05
  • Java線程池使用AbortPolicy策略

    Java線程池使用AbortPolicy策略

    這篇文章主要介紹了?Java線程池使用AbortPolicy策略,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06
  • Java synchronized鎖升級jol過程詳解

    Java synchronized鎖升級jol過程詳解

    這篇文章主要介紹了Java synchronized鎖升級jol過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Tree組件實現支持50W數據方法剖析

    Tree組件實現支持50W數據方法剖析

    這篇文章主要為大家介紹了Tree組件實現支持50W數據的方法剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 簡述Springboot @Async 異步方法

    簡述Springboot @Async 異步方法

    這篇文章主要介紹了Springboot @Async 異步方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • Java結構型設計模式之裝飾模式詳解

    Java結構型設計模式之裝飾模式詳解

    裝飾模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現有類的一個包裝。這種模式創(chuàng)建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能
    2023-03-03
  • Java自定義equals產生的問題分析

    Java自定義equals產生的問題分析

    這篇文章主要介紹了Java自定義equals時super.equals帶來的問題分析,總的來說這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過程。希望通過這道題能給你帶來一種解題優(yōu)化的思路
    2023-01-01

最新評論