jsp将实体类作为参数传到action(或者叫controller)

<script type="text/javascript">
$(document).ready(function(){ 
	
	//添加
	$("#add_button").click(function() {
			$("#form1").submit();
	});
});

</script>
<form enctype="multipart/form-data" name="form1" id="form1"  method="post" action="./appPicAddOk.jspx?id=${item.id }">
	
	<div class="common_main_mid">
		<table border="1" width="100%" class="dataTable" id="mytable">
			<tr>
				<td>栏目表</td>
				<td><j:select name="tablename" value="${item.tablename}" list="[{'name':'营业厅','value':'t_d_Servicenet'},{'name':'Vip贵宾厅','value':'t_d_vipgbt'},{'name':'wifi热点','value':'t_d_Wifi_Hotspot'},{'name':'维修网点','value':'t_d_Repair'}]" /></td>
			</tr>
			
			<tr>
				<td>栏目名称</td>
				<td>  <input type="text" id="" style="width:420px;" name="columnname" value="${item.columnname }"/></td>
			</tr>
			<tr>
				<td>页面布局方式</td>
				<td>  <j:select name="layoutofpage" value="${item.layoutofpage}" list="[{'name':'营业厅布局','value':'1'},{'name':'Vip贵宾厅布局','value':'2'},{'name':'wifi热点布局','value':'3'},{'name':'维修网点布局','value':'4'}]" headKey="默认布局" headValue="0" /></td>
			</tr>
			<tr>
				<td>距离</td>
				<td>  <input type="text" id="" title="请严格按照“样板”填写" style="width:420px;" name="distance" value="${item.distance }"/>样板:全部,200M,500M,2000M(英文逗号,不能有空格,客户端显示逗号分割后的排序,即200在500前)</td>
			</tr>
			<tr>
				<td>智能分类</td>
				<td>  <input type="text" id="" title="请严格按照“样板”填写" style="width:420px;" name="iconame" value="${item.iconame }"/>样板:全部,异地补卡,24小时营业,4G业务,促销及公告,手机以旧换新(英文逗号,不能有空格,客户端显示逗号分割后的排序,即200在500前)</td>
			</tr>
			<tr>
				<td>上下线</td>
				<td> <j:radio name="isstate" value="${item.isstate}" list="[{'name':'上线','value':'0'},{'name':'下线','value':'1'}]"  defaultValue="0"/></td>
			</tr>
			<tr>
				<td>列表布局</td>
				<td> <j:radio name="listshowtype" value="${item.listshowtype}" list="[{'name':'客户端布局','value':'0'},{'name':'HTML5布局','value':'1'}]"  defaultValue="0"/></td>
			</tr>
			<tr>
				<td>详情布局</td>
				<td> <j:radio name="infoshowtype" value="${item.infoshowtype}" list="[{'name':'客户端布局','value':'0'},{'name':'HTML5布局','value':'1'}]"  defaultValue="0"/></td>
			</tr>
			<tr>
				<td>省市区</td>
				<td> <j:radio name="isssq" value="${item.isssq}" list="[{'name':'无','value':'0'},{'name':'省市区','value':'1'},{'name':'省市','value':'2'}]"  defaultValue="0"/></td>
			</tr>
			<tr>
				<td>排序</td>
				<td>  <input type="text" id="" style="width:420px;" name="issort" value="${item.issort }" onkeyup='value=value.replace(/[^\d]/g,"") '  
        				onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"/></td>
			</tr>	
		</table>
		<table border="1" width="100%" class="dataTable">
			<tr>
			<td colspan="2" align="center" style="margin-left: 500px">
				<input type="button" value="保存" class="jquery_button" id="add_button" name="add_button" />
				<input type="button" class="jquery_button" value="返回" onClick="location.href='./listNearColumn.jspx?action=peek'" />
			</td>
			</tr>
		</table>
	</div>
</form>

/**
	 * 添加修改
	 * @param request
	 * @param response
	 * @param multipartrequest
	 * @return
	 */
	@RequestMapping(value = "/appPicAddOk.jspx")
	public String appPicAddOk(HttpServletRequest request,TDNearcolumn col) {
		RequestProxy proxy =RequestProxy.fromRequest(request);
		String id = request.getParameter("id");  

		try {
			if(!ValidateUtils.isEmpty(id)&&ValidateUtils.isNumeric(id)){ 
				TDNearcolumn newCol = this.colService.getNearColumnById(Integer.parseInt(id));
				BeanUtils.copyProperties(newCol, col);
				
				this.colService.merge(newCol);
			}else{
				col.setAdddate(new Date());
				this.colService.insert(col);
			}
		} catch (Exception e) {
			e.printStackTrace();
			HttpUtils.setActionMessage(request, e.getMessage(),ACTION_MSG_TYPE.ERROR,true);
		}

		HttpUtils.setActionMessage(request, "保存成功!", ACTION_MSG_TYPE.SUCCESS, true);
		return "redirect:./listNearColumn.jspx?action=peek";
	}

【有图片的时候另当别论哦】


总结:1,页面要求实体类的属性跟控件的name保持一致


2,不要放隐藏域,有这个会报400的错误,不服气走一个


3,action中实体类作为参数,接收,不要response


4,action中要copy下属性,否则修改的时候会400哦


5,最后也是最重要的:遇到困难不能萎缩,这个搞定了,以后直接通用,就不要一个个request.getparam("")


6,由于将实体类作为参数的时候,它无法识别data类型的,那么data类型的字段不能直接给属性,意思是如果属性是startdate,那么给它取名的时候取成start,然后这个参数用request.getParameter("start"),重新set到属性里面去,5说的果然是对的,果然不能萎缩,不能萎缩+1


7,如果发现得到的实体类全是null的时候,仔细想想是不是request没有配置呢?在applicationContext.xml中加入一个bean:

<bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
<!-- 以字节为单位的最大上传文件的大小 10GB -->  
<property name="maxUploadSize" value="10737418240" />  
<property name="uploadTempDir" value="./WEB-INF/file_upload_temp"></property>
<property name="defaultEncoding" value="ISO-8859-1"/>
</bean>


你可能感兴趣的:(java实体类作为参数传递)