struts2的action中为什么获取不到 request.getParamter()中的值

灬潜龙在渊 2014-08-20 05:51:32

方法执行没有问题,只是request.getParamter或者request.getAttribute都取不到值,在后台输出了一下,发现为 null。
说明前台的request根本没有传递到后台去,我百度了很多,说可能要用上拦截器,弄了好久都不成功,没有办法,只能求助
广大网友了!

先贴一下局部的代码吧


struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<package name="struts2.acion" extends="struts-default" >
<action name="region" class="admin.Region" >
</action>
<action name="admin_*" class="admin.Admin" method="{1}">
<result >/Admin/RegionShow.jsp</result>
</action>
</package>

</struts>

action中的调用的是这个方法

public String delRegion() throws MyException
{

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(MyException e)
{
e.TraceError();
throw e;
}

return "success";
}
前台代码:
<%
int parasum = 2;
String strsql = "SELECT re_type,id FROM tbl_region where sh_type="
+request.getParameter("sh_type"); //在这里是值的

%>
<s:form theme="simple" action="admin_delRegion" onsubmit="sb()">
<div align="center" class="buttonDiv">
<input type="button" value="全 选" onClick="sltAll()" name="all">
<input type="button" id="dele" value="清 空" onClick="sltNull(this)"name="clear">
<input type="submit" value="删 除" id="delete" name="delete" >
</div>
<input type="hidden" id="para1" name="para1" value="">
</s:form>
...全文
496 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灯光环 2014-08-21
  • 打赏
  • 举报
回复
ab这个参数是从哪传到Action的,我ctrl+f 查找ab只看到你在Action中取,没见到你在哪存,这样是可以取到的,不过不推荐这样做,struts有自带的method拦截器,你直接在Action中定义一个全局变量,public String ab; 这样如果有ab参数传过来,在方法中这个全局变量就可以直接接收到参数值了。
LOVE-漂泊 2014-08-21
  • 打赏
  • 举报
回复
直接放在对象里,getset 然后就可以直接取出了
Golden_Dog 2014-08-21
  • 打赏
  • 举报
回复
同意2楼说法
引用 2 楼 longtian1213 的回复:
你的form表单中没有name为sh_type的输入框吧,当然取不到了
引用 9 楼 u011385186 的回复:
从action跳到对应的jsp。所以首先action中要有sh_type,然后在jsp页面中用<s:debug>调试值传到哪里,然后取出来
好吧我看错了,从jsp页面转到action只要input名字和action中的属性值相同就行。struts自动帮你注入,就能取出来。
Golden_Dog 2014-08-21
  • 打赏
  • 举报
回复
从action跳到对应的jsp。所以首先action中要有sh_type,然后在jsp页面中用<s:debug>调试值传到哪里,然后取出来
shixitong 2014-08-21
  • 打赏
  • 举报
回复
一般都用get/set就行了,如果非要要equest这样的方式取值,需要实现ServletRequestAware这个接口,好像还有其它的方法,记不得了,可以去网上查查
灬潜龙在渊 2014-08-21
  • 打赏
  • 举报
回复
引用 4 楼 xiangnan129 的回复:
首先看你的form表单里面没有name为“sh_type”的对象,其次,如果你用了Struts2,就不要再用getParamter()了。不然你这样取值,跟servlet没有区别。完全没有用到Struts2的功能。
确实是你说的这样子,那对于struts2来说,想要传参的话,使用get/set是最好的选择吗?
灬潜龙在渊 2014-08-21
  • 打赏
  • 举报
回复
引用 3 楼 rui888 的回复:
你什么方式提交的 ?
有设置,没贴出来,4楼解决了我的问题
Juedaifanghua 2014-08-21
  • 打赏
  • 举报
回复
楼上正解!!
青元子 2014-08-21
  • 打赏
  • 举报
回复
你这个是最原始的MVC操作吧,通过request跟getParameter从前台传值到servlet 你可以不用form表单提交,直接用href传值跳转到后台 如果你用form的话,就用get ,set方法,在后台取出来。前提是你在前台提交的时间,form中含有你要传的值
scott_129 2014-08-20
  • 打赏
  • 举报
回复
首先看你的form表单里面没有name为“sh_type”的对象,其次,如果你用了Struts2,就不要再用getParamter()了。不然你这样取值,跟servlet没有区别。完全没有用到Struts2的功能。
tony4geek 2014-08-20
  • 打赏
  • 举报
回复
你什么方式提交的 ?
S117 2014-08-20
  • 打赏
  • 举报
回复
你的form表单中没有name为sh_type的输入框吧,当然取不到了
N798588567 2014-08-20
  • 打赏
  • 举报
回复
action类要设置get、set方法吧,不然人家怎么帮你转?

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧