Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java-将@RequestParam作为列表是不可能的吗? 大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个像这样的控制器:

@requestMapping(value="/SELEctTimeSpaceBusRunList.do")
public ModelAndView SELEctTimeSpaceBusRunList(Model model,httpServletrequest request,@requestParam("search_date") String search_date,@requestParam(value="compid",required=false,DefaultValue="") String compid,@requestParam(value="routEID",required=truE) String routEID,@requestParam(value="busList",required=truE) List<String> busList)
{
    ModelAndView mv = new ModelAndView();
    Map<String,List<TbDmhtmspaceChartVO>> resultMap = new HashMap<String,List<TbDmhtmspaceChartVO>>();

    try {
        TbDmhtmspaceChartVO vo = new TbDmhtmspaceChartVO();
        search_date = search_date.replaceAll("-","");
        vo.setSearch_start_date(search_date + "000000");
        vo.setSearch_END_DATE(search_date + "235959");
        vo.setCompid(compid);
        vo.setRoutEID(routEID);
        vo.setBusList(busList);
        List<TbDmhtmspaceChartVO> resultList = runservice.SELEctTimeSpaceBusRunList(vo);
        resultMap.put("resultList",resultList);
    } catch (Exception E) {
        logger.error("##SELEctTimeSpaceBusRunList exception " + e.toString());
    }
    mv.addAllObjects(resultMap);
    mv.setViewName("jsonView");
    return mv;
}

我有这样的VO:

public class TbDmhtmspaceChartVO {
private String run_enddt;       //  date                yes     1   
private String busid;           //  number(9,0)         yes     2   
private String run_startdt;     //  date                yes     3   
private String routEID;         //  number(9,0)         yes     4   
private String compid;          //  number(6,0)         yes     5   
private String carregno;        //  varchar2(12 bytE)   yes     6   
private String runord;          //  number(4,0)         yes     7   
private String start_pathseq;   //  number(5,0)         yes     8   
private String end_pathseq;     //  number(5,0)         yes     9   
private String @R_3_10586@l_bstopcnt;  //  number(10,0)        yes     10  
private String seq_list;        //  varchar2(4000 bytE) yes     11  
private String node_list;       //  varchar2(4000 bytE) yes     12  
private String hms_list;        //  varchar2(4000 bytE) yes     13  
private String coll_list;       //  varchar2(4000 bytE) yes     14  
private String cross_pass_cnt;  //  number(10,0)        yes     15  
private String seq_list_1;      //  varchar2(4000 bytE) yes     16  
private String node_list_1;     //  varchar2(4000 bytE) yes     17  
private String hms_list_1;      //  varchar2(4000 bytE) yes     18  
private String coll_list_1;     //  varchar2(4000 bytE) yes     19  
private String bstop_dep_cnt;   //  number(10,0)        yes     20  
private String seq_list_3;      //  varchar2(4000 bytE) yes     21  
private String node_list_3;     //  varchar2(4000 bytE) yes     22  
private String hms_list_3;      //  varchar2(4000 bytE) yes     23  
private String coll_list_3;     //  varchar2(4000 bytE) yes     24  

private String search_start_date;
private String search_END_DATE;

private List<String> busList;

// getters and setters...
public List<String> getBusList() {
    return busList;
}
public void setBusList(List<String> busList) {
    this.busList = busList;
}
}

对于我发送的数据是:

busList: ["7211342","7015067"]
compid: "166001"
routEID: "165000056"
search_date: "2017-11-06"

我的ajax电话是这样的

$.ajax({
    type: "POST",url: "./run/SELEctTimeSpaceBusRunList.do",data: {
        search_date : input_date,compid : $("#busCompany").val(),routEID : $("#busRoute").val(),busList : SELEcted_bus_list
    },dataType : "json",beforeSend: null,success: success,error: null
});

当ajax调用完成时,它以如下错误结束:

org.springframework.web.bind.MissingServletrequestParameterException: required List parameter 'busList' is not present

因此@requestParam(value =“ busList”,required = truE)List< string=""> busList),但找不到该解决方案.

我的问题是:

>是否无法通过@requestParam获取List变量?
>如果不可能,还有其他方法可以获取List变量吗?
>是否可以一次获取DTO变量?

问候,

更新

我更改了@requestParam(value =“ busList”,required = truE)List< string="">将list< string="">转换为@requestParam(value =“ busList”,required = falsE). busList),现在工作正常.所以我认为问题出在busList的发送方式不正确.

最佳答案
@H_607_55@最常见的将值列表作为URL参数传递的标准方法是重复它们,即

http://rentacar.com/api/v1/search?make=audi&model=A8&type=6&type=11&type=12&color=RED&color=GREY

现在的问题是在Spring MVC REST端点中处理此类输入?假设您正在开发一个搜索API,以查找可出租的汽车;这是您将如何做的:

public List<Vehicle> search(@requestParam(value="make",required=falsE) String make,@requestParam(value="model",required=falsE) String model,@requestParam(value="type",required=falsE) List<String> types,@requestParam(value="color",required=falsE) List<String> colors) {
....
}

https://medium.com/@rasheedamir/spring-mvc-how-to-pass-list-of-values-as-url-parameters-5d57dcac8457

大佬总结

以上是大佬教程为你收集整理的java-将@RequestParam作为列表是不可能的吗? 全部内容,希望文章能够帮你解决java-将@RequestParam作为列表是不可能的吗? 所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。