在网上找了,几种方案,都不行啊,有关于如何接收对象的,如何接收List的,就是没有同时如何接收一个对象与List,自己写了个能用的方法就是,就是把整个表单全部提交,以数组下表区分是第几个,对象,保存提交代码如下:

http://localhost:8080/GZ/dtcasehistory/addcasehistory?guid=4DF7694521DC7FC1E053AA0012AC45DE&name=ckse&sex=男&birthday=2017-3-6&cardid="123465798&medicalid=36985274&jws=没有既往史&medicalid=36985274&mainn=这是主诉&zhand=这是诊断1,诊断2,诊断3&dts[0].drunam=这是药品1&dts[0].unit=这是规格&dts[0].numnit=123456&dts[0].pian=963&dts[0].pc=33364&dts[0].kfwyname=这是途径0&dts[1].drunam=这是药品2&dts[1].unit="这是规格2&dts[1].numnit=1234561&dts[1].pian=9632&dts[1].pc=333642&dts[1].kfwyname=这是途径1

guid=4DF7694521DC7FC1E053AA0012AC45DE

&name=ckse

&sex=男

&birthday=2017-3-6

&cardid="123465798

&medicalid=36985274

&jws=没有既往史

&medicalid=36985274

&mainn=这是主诉

&zhand=这是诊断1,诊断2,诊断3

&dts[0].drunam=这是药品1

&dts[0].unit=这是规格

&dts[0].numnit=123456

&dts[0].pian=963

&dts[0].pc=33364

&dts[0].kfwyname=这是途径0

&dts[1].drunam=这是药品2

&dts[1].unit="这是规格2

&dts[1].numnit=1234561

&dts[1].pian=9632

&dts[1].pc=333642

&dts[1].kfwyname=这是途径1

写好之后,交给前端,遇到一个很尴尬的地方就是,他问我怎么提交这个数据?????,说很难实现,以JS的形式,我当时傻逼了。。。觉得是有点麻烦。。下班之后,在地铁上一想。。。这他妈还不简单。。。一个表单就提交了。。。

具体代码如下:

实体类如下:

病历只有一个:

* @version V1.0 * @Author fendo * @ClassName DTsickblhdrRequest * @PackageName com.gz.medicine.yun.doctor.request * @Description 病历请求数据 * @Data 2017-08-18 14:17 public class DTsickblhdrRequest implements Serializable { //患者ID @NotEmpty(message = "患者guid不能为空!") private String guid; //1、患者姓名 @NotEmpty(message="患者姓名name不能为空!") private String name; //2、性别 @NotEmpty(message="性别sex不能为空!") private String sex; //3、出生年月 @NotEmpty(message="出生年月birthday不能为空!") private String birthday; //4、医保卡号 @NotEmpty(message="医保卡号cardid不能为空!") private String cardid; //5、就诊卡号 @NotEmpty(message="就诊卡号medicalid不能为空!") private String medicalid; //6、主诉 @NotEmpty(message="主诉mainn不能为空!") private String mainn; //7、既往史 @NotEmpty(message="既往史jws不能为空!") private String jws; //8、诊断 @NotEmpty(message="诊断zhand不能为空!") private String zhand; .......

用药方案有多个,用个List来装:

* @version V1.0 * @Author fendo * @ClassName DTsickbldtlRequestList * @PackageName com.gz.medicine.yun.doctor.request * @Description 用药方案请求List数据封装 * @Data 2017-08-19 14:21 public class DTsickbldtlRequestList implements Serializable { private List<DTsickbldtlRequest> dts; public List<DTsickbldtlRequest> getDts() { return dts; public void setDts(List<DTsickbldtlRequest> dts) { this.dts = dts; public DTsickbldtlRequestList() {

Controller如下:

*@Title AddCaseHistory *@Description: 新增患者病历 *@Author fendo *@Date 2017年8月17日 上午10:52 *@param dTsickblhdrRequest,dTsickblhdrRequest *@return int *@throws @RequestMapping(value = "addcasehistory",method = RequestMethod.POST,produces="text/html;charset=UTF-8") @ResponseBody public SimpleResult AddCaseHistory(DTsickblhdrRequest dTsickblhdrRequest,DTsickbldtlRequestList dTsickbldtlRequestList){ SimpleResult simpleResult=null; if(validates(validator, dTsickblhdrRequest)!=null){ return SimpleResult.error(SimpleCode.ERROR.getCode(), validates(validator, dTsickblhdrRequest)); if(dTsickbldtlRequestList.getDts()!=null){ for (int j=0;j<dTsickbldtlRequestList.getDts().size();j++){ DTsickbldtlRequest dTsickbldtlRequest=dTsickbldtlRequestList.getDts().get(j); if(validates(validator, dTsickbldtlRequest)!=null){ return SimpleResult.error(SimpleCode.ERROR.getCode(), validates(validator, dTsickbldtlRequest)); simpleResult=dtCaseHistoryService.addMedicalRecords(dTsickbldtlRequestList,dTsickblhdrRequest); return simpleResult; }catch (CommonException e){ LOGGER.error(e); return SimpleResult.error(SimpleCode.ERROR.getCode(), e.getDesc());

页面如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<form action="" method="post" id="formdata">
ID: <input type="text" id="guid" name="guid" value="4DF7694521DC7FC1E053AA0012AC45DE" placeholder="4DF7694521DC7FC1E053AA0012AC45DE"/> <br>
姓名: <input type="text" id="name" name="name" value="ckse" placeholder="ckse"/> <br>
性别: <input type="text" id="sex" name="sex" value="男" placeholder="男"/> <br>
出生日期: <input type="text" id="birthday" name="birthday" value="2017-3-6" placeholder="2017-3-6"/> <br>
医保卡号: <input type="text" id="cardid" name="cardid" value="2017-3-6" placeholder="2017-3-6"/> <br>
就诊卡号: <input type="text" id="medicalid" name="medicalid" value="36985274" placeholder="36985274"/> <br>
主诉: <input type="text" id="mainn" name="mainn" value="这是主诉" placeholder="这是主诉"/> <br>
既往史: <input type="text" id="jws" name="jws" value="没有既往史" placeholder="没有既往史"/> <br>
诊断: <input t ype="text" id="zhand" name="zhand" value="这是诊断1,诊断2,诊断3" placeholder="这是诊断1,诊断2,诊断3"/> <br>
用药方案:<br>
方案1------------------<br>
药品名: <input type="text" id="dts[0].drunam" name="dts[0].drunam" value="这是药品1" placeholder="这是药品1"/><br>
规格: <input type="text" id="dts[0].unit" name="dts[0].unit" value="这是规格" placeholder="这是规格"/><br>
数量: <input type="text" id="dts[0].numnit" name="dts[0].numnit" value="123456" placeholder="123456"/><br>
剂量: <input type="text" id="dts[0].pian" name="dts[0].pian" value="963" placeholder="963"/><br>
频次: <input type="text" id="dts[0].pc" name="dts[0].pc" value="33364" placeholder="33364"/><br>
途径: <input type="text" id="dts[0].kfwyname" name="dts[0].kfwyname" value="这是途径0" placeholder="这是途径0"/><br>
方案2------------------<br>
药品名: <input type="text" id="dts[1].drunam" name="dts[1].drunam" value="这是药品1" placeholder="这是药品1"/><br>
规格: <input type="text" id="dts[1].unit" name="dts[1].unit" value="这是规格" placeholder="这是规格"/><br>
数量: <input type="text" id="dts[1].numnit" name="dts[1].numnit" value="123456" placeholder="123456"/><br>
剂量: <input type="text" id="dts[1].pian" name="dts[1].pian" value="963" placeholder="963"/><br>
频次: <input type="text" id="dts[1].pc" name="dts[1].pc" value="33364" placeholder="33364"/><br>
途径: <input type="text" id="dts[1].kfwyname" name="dts[1].kfwyname" value="这是途径0" placeholder="这是途径0"/><br>
<input id="submit" value="提交" type="button">
</form>
<script>
    $(function () {
        $("#submit").click(function () {
            $.ajax({
                url: "<%=request.getContextPath()%>/dtcasehistory/addcasehistory",
                type: "POST",
                dataType:"json",
                data: $("#formdata").serialize() ,
                success: function(data){
                    alert(data);
                error: function(res){
                    alert(res.responseText);
</script>
</body>
</html>

页面效果如下:

----------------------------------后续-------------------------------------

还有种方法就是,全部以JSON的形式往后台传:

localhost:8996/GZ/dtcasehistory/adds?model={
    "guid": "123",
    "name": "234",
    "sex": "男",
	"birthday":"2017-3-6",
	"cardid":"123465798",
	"medicalid":"36985274",
	"mainn":"这是主诉",
	"jws":"没有既往史",
	"zhand":"这是诊断1,诊断2,诊断3",
    "dts": [{
        "drunam": "药品名0",
        "unit": "规格0",
        "numnit": "数量0",
		"pian":"剂量0",
		"pc":"频次0",
		"kfwyname":"途径0"
        "drunam": "药品名1",
        "unit": "规格1",
        "numnit": "数量1",
		"pian":"剂量1",
		"pc":"频次1",
		"kfwyname":"途径1"

前端代码:

        $("#suv").click(function () {
            var mode={"guid": "123", "name": "234","sex": "男","birthday":"2017-3-6","cardid":"123465798","medicalid":"36985274","mainn":"这是主诉","jws":"没有既往史", "zhand":"这是诊断1,诊断2,诊断3", "dts": [{"drunam": "药品名0", "unit": "规格0", "numnit": "数量0", "pian":"剂量0", "pc":"频次0", "kfwyname":"途径0"},{"drunam": "药品名1", "unit": "规格1", "numnit": "数量1", "pian":"剂量1", "pc":"频次1", "kfwyname":"途径1"}]};
            var ddd  = encodeURI(JSON.stringify(mode));
            $.ajax({
                url: "<%=request.getContextPath()%>/dtcasehistory/adds",
                type: "POST",
                dataType:"json",
                data:"model="+ddd,
                success: function(data){
                    alert(data);
                error: function(res){
                    alert(res.responseText);
注意:JSON放在model里面,所以,在后台通过可以request.getParameter("model")来获取这个数据,然后通过json-lib来解析就行了,具体代码如下: 
   @RequestMapping(value = "adds",method = RequestMethod.POST,produces="text/html;charset=UTF-8")
    @ResponseBody
    public SimpleResult adds(HttpServletRequest request, HttpServletResponse response){
        SimpleResult simpleResult=null;
        String str = null;
        try {
            //解码,为了解决中文乱码
            str = URLDecoder.decode(request.getParameter("model"),"UTF-8");
            System.out.println("----------------str"+str);
            JSONObject jb=new JSONObject();
            //将json格式的字符串转换为json数组对象
            JSONArray array=(JSONArray)jb.fromObject(str).get("dts");
            //取得json数组中的第一个对象
            JSONObject o = (JSONObject) array.get(0);//获得第一个array结果
            System.out.println("数组大小:"+array.size());
            //取出json数组中第一个对象的“userName”属性值
            String name=o.get("drunam").toString();//获得属性值
            System.out.println(name);
            System.out.println(o);
        } catch (Exception e) {
            e.printStackTrace();
        simpleResult=SimpleResult.success();
        return  simpleResult;
后端输出如下: 

注意: 这里引入了json-lib,使用的是json-lib来解析JSON,因为其中有个将json格式的字符串转换为json数组对象的方法,maven依赖如下

<dependency>
	<groupId>net.sf.json-lib</groupId>
	<artifactId>json-lib</artifactId>
	<version>2.4</version>
	<classifier>jdk15</classifier>
</dependency>

还有方法就是扩展SpringMVC以支持绑定JSON格式的请求参数,具体可参考这: http://jinnianshilongnian.iteye.com/blog/1719952 我这用的spring 版本是4,而他用的是3,所以没试。 故事是这样的,有一个需求是新增病历,一个用户有多个用药方案如下:在网上找了,几种方案,都不行啊,有关于如何接收对象的,如何接收List的,就是没有同时如何接收一个对象与List,自己写了个能用的方法就是,就是把整个表单全部提交,以数组下表区分是第几个,对象,保存提交代码如下:http://localhost:8080/GZ/dtcasehistory/add 相信很人都被springmvc接收数组问题折磨过,查过几个解决方案,都不能很好的解决。那些方法一般存在一个问题:把接收到的数据结构转换成你想要的结构时,不好处理。为什么说不好处理下文有具体例子介绍(见1.2)。 1 本文springmvc版本为3.1 ,ecplise:月神(luna),tomcat:7.0,jdk... 继前面一篇 springMVC 页面中多个对象的数据绑定 ,本文主要介绍如果实现复杂类型对象的数据绑定,比如前文中的父级对象CourseInfo 中增加:String[] times , List studentList 这两个复杂类型属性,页面中数据如何才能准确绑定到对象上呢? [二]、实现方法及测试 Cours var studentArray= []; studentArray.push({age: "1", name: "李四"}); studentArray.push({age: "2", name: "张三"}); $.ajax({ url: "../test", type: 'POST', data: JSON.stringify(studentArray), dataType:'json',
Controller层: @RequestMapping(value=&amp;amp;quot;/saveFirstReport&amp;amp;quot;,method=RequestMethod.POST) @ResponseBody public JSONObject saveFirstReport(HttpServletRequest request, CommonFirstFilingReport offcourtSecuri
前端集合参数Ajax请求,这里用一个多图片上传场景举例: var dataObj = []; for (let img of this.imgContentList) { var dataArr = {}; dataArr.aname = img.name; dataArr.apath = img.url; dataArr.oid = this.adjunctOid; dataObj.push(dataArr); 如果后端想用一个List一次性接收,那么Ajax请求得这么写,与一般请求的区别
Spring MVC一个非常流行的Java Web框架,它提供了很多便利的功能,如支持请求-响应范式,支持RESTful架构等。不过,当我们尝试直接将一个List类型的参数传递给Spring MVC时,就会遇到问题。 Spring MVC框架默认使用HTTP协议进行通信,HTTP协议只能传输字符串类型的数据,不能直接传输集合类型的数据。因此,当我们在Spring MVC控制器中的方法中使用List类型的参数时,Spring MVC框架无法将HTTP请求中的内容转换为List类型。 为了解决这个问题,我们需要对List类型的参数进行处理。一种解决方法是在HTTP请求中使用字符串类型的参数,然后在控制器方法中对该参数进行解析和转换。例如,我们可以将多个参数用逗号隔开,然后在控制器方法中使用String的split()方法将其转换为List类型的参数。 另一种解决方法是使用专门的数据绑定器,将HTTP请求中的参数自动转换为List类型的对象Spring MVC框架提供了一些内置的数据绑定器,例如使用@ModelAttribute注解,但这些方法都有一定的局限性。 综上所述,Spring MVC框架不能直接接收List类型参数,但可以通过处理字符串类型的参数或使用数据绑定器来解决该问题。在使用Spring MVC框架时,我们应根据实际情况来选择最合适的解决方案。
maven WEB项目启动没问题访问页面就报错:org.apache.jasper.JasperException: Unable to compile class for JSP didadidadi03: 表情包用的是Tomcat7 但是还是报错啊