鍍金池/ 問答/Java  HTML/ springboot請(qǐng)求參數(shù)是一個(gè)類,類中含有l(wèi)ist

springboot請(qǐng)求參數(shù)是一個(gè)類,類中含有l(wèi)ist

如題。

后臺(tái)controller:

@RequestMapping("generatorOrder")
    public TMessage generatorOrder(Order order) {
        ...其他代碼
    }

order類:

public class Order implements Serializable {
    
    
    private Long orderId;
    
    private BigDecimal sum;
    /**
     * 訂單創(chuàng)建時(shí)間
     */
    private Timestamp gmtCreate;
    private transient List<OrderDetail> detailList;
}

這是我測試結(jié)果:

clipboard.png

"defaultMessage": "Failed to convert property value of type 'java.lang.String' to required type 'java.util.List' for property 'detailList'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'cn.tianyustudio.coffeehouseinterface.entity.OrderDetail' for property 'detailList[0]': no matching editors or conversion strategy found",
      "objectName": "order",
      "field": "detailList",
      "rejectedValue": "{\"orderId\":1,\"foodId\":null,\"num\":10}",
      "bindingFailure": true,
      "code": "typeMismatch"

意思是string無法轉(zhuǎn)成list

詳細(xì)錯(cuò)誤信息
clipboard.png

如果不將后臺(tái)請(qǐng)求參數(shù)改成order類json格式的string,應(yīng)該如何正確接收?
圖片有點(diǎn)模糊,請(qǐng)點(diǎn)擊查看原圖

回答
編輯回答
笑浮塵

public class OrderDetailConverter implements AttributeConverter<List<OrderDetail>, String> {

private ObjectMapper mapper = new ObjectMapper();
private String EMPTY = "[]";
private TypeReference typeReference = new TypeReference<List<Parcel>>(){};

@Override
public String convertToDatabaseColumn(List<OrderDetail> list) {
    try {
        return mapper.writeValueAsString(list);
    } catch (JsonProcessingException e) {
        return EMPTY;
    }
}

@Override
public List<OrderDetail> convertToEntityAttribute(String json) {
    return mapper.readValue(json, typeReference);
}

}

2018年7月16日 22:56
編輯回答
兮顏

上面給出了一個(gè)統(tǒng)一處理的辦法,如果只是這個(gè)特定需求,那就用字符串接收唄。
比如拼接成字符串用,隔開,后臺(tái)拿到后split一下也沒什么問題。
還可以用數(shù)組接收啊。

2017年9月1日 09:58
編輯回答
何蘇葉

我現(xiàn)在在后臺(tái)接收字符串(json格式的),再將字符串轉(zhuǎn)成對(duì)應(yīng)的類,就可以了。

2018年7月5日 02:40