问题描述
方法执行没有问题,只是request.getParamter或者request.getAttribute都取不到值,在后台输出了一下,发现为null。说明前台的request根本没有传递到后台去,我百度了很多,说可能要用上拦截器,弄了好久都不成功,没有办法,只能求助广大网友了!先贴一下局部的代码吧struts.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http://struts.apache.org/dtds/struts-2.1.dtd"><struts><constantname="struts.devMode"value="true"/><packagename="struts2.acion"extends="struts-default"><actionname="region"class="admin.Region"></action><actionname="admin_*"class="admin.Admin"method="{1}"><result>/Admin/RegionShow.jsp</result></action></package></struts>action中的调用的是这个方法publicStringdelRegion()throwsMyException{System.out.println("para1="+para1);System.out.println("ab="+ServletActionContext.getRequest().getAttribute("ab"));try{System.out.println("sh_type="+ServletActionContext.getRequest().getParameter("sh_type"));region.delRe(para1);//实现删除功能,无措System.out.println("sh_type="+ServletActionContext.getRequest().getParameter("sh_type"));}catch(MyExceptione){e.TraceError();throwe;}return"success";}前台代码:<%intparasum=2;Stringstrsql="SELECTre_type,idFROMtbl_regionwheresh_type="+request.getParameter("sh_type");//在这里是值的%><s:formtheme="simple"action="admin_delRegion"onsubmit="sb()"><divalign="center"class="buttonDiv"><inputtype="button"value="全选"onClick="sltAll()"name="all"><inputtype="button"id="dele"value="清空"onClick="sltNull(this)"name="clear"><inputtype="submit"value="删除"id="delete"name="delete"></div><inputtype="hidden"id="para1"name="para1"value=""></s:form>
解决方案
解决方案二:
action类要设置get、set方法吧,不然人家怎么帮你转?
解决方案三:
你的form表单中没有name为sh_type的输入框吧,当然取不到了
解决方案四:
你什么方式提交的?
解决方案五:
首先看你的form表单里面没有name为“sh_type”的对象,其次,如果你用了Struts2,就不要再用getParamter()了。不然你这样取值,跟servlet没有区别。完全没有用到Struts2的功能。
解决方案六:
楼上正解!!
解决方案七:
引用3楼rui888的回复:
你什么方式提交的?
有设置,没贴出来,4楼解决了我的问题
解决方案八:
引用4楼xiangnan129的回复:
首先看你的form表单里面没有name为“sh_type”的对象,其次,如果你用了Struts2,就不要再用getParamter()了。不然你这样取值,跟servlet没有区别。完全没有用到Struts2的功能。
确实是你说的这样子,那对于struts2来说,想要传参的话,使用get/set是最好的选择吗?
解决方案九:
一般都用get/set就行了,如果非要要equest这样的方式取值,需要实现ServletRequestAware这个接口,好像还有其它的方法,记不得了,可以去网上查查
解决方案十:
从action跳到对应的jsp。所以首先action中要有sh_type,然后在jsp页面中用<s:debug>调试值传到哪里,然后取出来
解决方案十一:
同意2楼说法引用2楼longtian1213的回复:
你的form表单中没有name为sh_type的输入框吧,当然取不到了
引用9楼u011385186的回复:
从action跳到对应的jsp。所以首先action中要有sh_type,然后在jsp页面中用<s:debug>调试值传到哪里,然后取出来
好吧我看错了,从jsp页面转到action只要input名字和action中的属性值相同就行。struts自动帮你注入,就能取出来。
解决方案十二:
直接放在对象里,getset然后就可以直接取出了
解决方案十三:
ab这个参数是从哪传到Action的,我ctrl+f查找ab只看到你在Action中取,没见到你在哪存,这样是可以取到的,不过不推荐这样做,struts有自带的method拦截器,你直接在Action中定义一个全局变量,publicStringab;这样如果有ab参数传过来,在方法中这个全局变量就可以直接接收到参数值了。
解决方案十四:
你这个是最原始的MVC操作吧,通过request跟getParameter从前台传值到servlet你可以不用form表单提交,直接用href传值跳转到后台如果你用form的话,就用get,set方法,在后台取出来。前提是你在前台提交的时间,form中含有你要传的值