Struts2中Action接收参数的方法

隐藏起来 2010-11-07 05:28:12
网络上有这样的方法
使用Action的属性接收参数:
a.定义:在Action类中定义属性,创建get和set方法;
b.接收:通过属性接收参数,如:userName;
c.发送:使用属性名传递参数,如:user1!add?userName=Magci;

但是当我对按上面的做,为什么接收不到参数呢?

在action里面创建了showChildTreeId 属性,创建get和set方法
然后在*********/action名字?showChildTreeId=11111
当我输出时,showChildTreeId 为空
这是怎么回事?
求解
...全文
460 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
隐藏起来 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 magicluo 的回复:]
注意拦截器的顺序撒
<interceptor-ref name="defaultStack" />

放在拦截器栈的最后一个看看
[/Quote]
试了,没用,纠结中……
magicluo 2010-11-07
  • 打赏
  • 举报
回复
注意拦截器的顺序撒
<interceptor-ref name="defaultStack" />

放在拦截器栈的最后一个看看

隐藏起来 2010-11-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 redlotus_lyn 的回复:]
struts.xml中,你的请求所在的package继承struts-default了吗?

即:

<package name="" extends="struts-default">
</package>
[/Quote]
[Quote=引用 3 楼 magicluo 的回复:]
同意一楼的大拿的

因为如果你继承了struts-default ,那么默认的拦截器栈中params这个拦截器就启用了

该拦截器负责将请求的参数设置为 Action 的属性,请求参数 也就是你的showChildTreeId这个参数会映射到你action中的showChildTreeId属性..

如果你的struts配置文件时继承自struts-default 的话 ,应该没有问题……
[/Quote]
<package name="administrator" namespace="/administrator"
extends="struts-default">

<interceptors>
<interceptor class="com.govweb.access.action.AuthorityInterceptor"
name="authority" />
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
这样算不算引用了?
我也尝试过把拦截器去了就行了,但是拦截器不能丢了啊,怎么处理?
隐藏起来 2010-11-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 magicluo 的回复:]
同意一楼的大拿的

因为如果你继承了struts-default ,那么默认的拦截器栈中params这个拦截器就启用了

该拦截器负责将请求的参数设置为 Action 的属性,请求参数 也就是你的showChildTreeId这个参数会映射到你action中的showChildTreeId属性..

如果你的struts配置文件时继承自struts-default 的话 ,应该没有问题……
[/Quote]
<package name="administrator" namespace="/administrator"
extends="struts-default">

<interceptors>
<interceptor class="com.govweb.access.action.AuthorityInterceptor"
name="authority" />
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
这样算不算引用了?
我也尝试过把拦截器去了就行了,但是拦截器不能丢了啊,怎么处理?
jiangeb 2010-11-07
  • 打赏
  • 举报
回复
路过,学习中,很有实际意义
jxdwinter 2010-11-07
  • 打赏
  • 举报
回复
struts.xml中:
<package name="p1" extends="struts-default">
<action name="login" class="找到你的action" method="找到你action里的方法">
<result>/登陆后转跳的.jsp</result>
</action>
<package>

域模型接受参数:

前台jsp中:
<form action="login">
<input type="text" name="user.name">
<input type="text" name="user.pswd">
<input type="submit">
<form>

后台实体类中:
定义user,并有2个属性,name和pswd,提供get,set方法

后台action中:
定义user,提供get,set方法后,提交表单S2会自己为user注入name和pswd两个属性
public String login(){
return SUCCESS;
}
希望对你有帮助~
magicluo 2010-11-07
  • 打赏
  • 举报
回复
同意一楼的大拿的

因为如果你继承了struts-default ,那么默认的拦截器栈中params这个拦截器就启用了

该拦截器负责将请求的参数设置为 Action 的属性,请求参数 也就是你的showChildTreeId这个参数会映射到你action中的showChildTreeId属性..

如果你的struts配置文件时继承自struts-default 的话 ,应该没有问题才对(除非你自定义了拦截器而没有引用默认拦截器)

另外2楼的按照传统的方式获取 request请求参数也可以..
不过既然你使用了struts2框架,这样既不必了。

检查下你的配置文件。

你读取showChildTreeId 是怎么读的呢? 会不会已经有值而你读取的写法不对?
zhu6100441 2010-11-07
  • 打赏
  • 举报
回复
showChildTreeId=ServletActionContext.getRequest().getParameter("showChildTreeId");
使用这个试试。配置里面好像是需要配置什么东西,不过忘了,这个可以用。
redlotus_lyn 2010-11-07
  • 打赏
  • 举报
回复
struts.xml中,你的请求所在的package继承struts-default了吗?

即:

<package name="" extends="struts-default">
</package>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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