2013-04-04 12 views
0

如題,SPRING ---如何提交對象的數組控制器

使用angularjs我

提交

我的春天控制器:

@RequestParam(value = "hashtag[]") hashtag[] o 

以上是數組參數的工作,但不是數組對象

我的js腳本:

$http({ 
     method: 'POST', 
     url: url, 
     data: $.param({ 
       hashtag : [{label:"success",value:"ok"},{label:"success",value:"ok"},{label:"success",value:"ok"}], 
       }), 
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); 

我從鉻觀察,表單數據是

hashtag[0][label]:success 
    hashtag[0][value]:10 

    hashtag[1][label]:success 
    hashtag[2][value]:10 

    hashtag[3][label]:success 
    hashtag[3][value]:10 

但春告訴我

org.springframework.web.bind.MissingServletRequestParameterException: Required hashtag[] parameter 'id[]' is not present 

以前我是能夠接受的參數數組,而不是一個對象。那麼有人能夠啓發我嗎?

+0

是'hashtag'一類 – 2013-04-04 08:13:47

回答

0

嘗試使用@ModelAttribute

創建一個新的Java類HashtagList像下面

public class HashTagList { 

    private List<HashTag> hashTag; 

    public List<HashTag> getHashTag() { 
     return hashTag; 
    } 

    public void setHashTag(List<HashTag> hashTag) { 
     this.hashTag = hashTag; 
    } 
} 

,並在控制器方法

@ModelAttribute("hashtag") HashTagList hashTagList 

是Java類的名稱#標籤或HASHTAG給出?

+0

可以更具體嗎?如果我沒有特定的('Content-Type':'application/x-www-form-urlencoded',則不支持) form-urlencoded')將不會有表單數據。 – Stupidfrog 2013-04-04 05:48:45

+0

我以爲你試圖提交JSON格式的數據 – Kris 2013-04-04 06:14:22

+0

:),而不是。它由一個表單數據。 – Stupidfrog 2013-04-04 06:24:05

0

嘗試@RequestParam(值= 「#標籤」)包括hashtag [] O

假設你有一個名爲類主題標籤havinf標籤和值的屬性。

0

因爲這是一個POST請求,您可以使用@RequestBody註釋並創建一個DTO類來映射您要發送的數據,或者甚至可以使用您的域對象。 例如,爲什麼不創建可重用的POJO類,它可以保存鍵 - >值對像:

@JsonPropertyOrder({"label", "value"}) 
public final class Pair<K,V> implements Map.Entry<K,V>, Serializable { 
    private final K key; 
    private final V value; 

    @JsonCreator 
    public Pair(@JsonProperty("label")K key, @JsonProperty("value")V value) { 
     this.key = key; 
     this.value = value; 
    } 
    // ... rest of the implementation 
} 

注:我假設在這裏使用的是傑克遜的映射,因此JSON註解。 下一步是獲取將保存的數據結構您從客戶端發送類:

public class HashTags implements Serializable { 
    List<Pair<String, String>> hashtag = new ArrayList<>(); 
    // ... rest of the implementation 
} 

然後在您的控制器,你將不得不做這樣的事情:

@RequestBody HashTags entity 
相關問題