解决方法|struts2执行action前加入拦截器,导致获取不到参数


今天学到使用ONGL表达式实现类型转换

虽然我还是不懂ONGL表达式是啥,但抱着“先get书本例子的方法再慢慢深入学习”的想法还是跟着书本敲代码

结果!在结果页面里怎么也获取不到输入的参数!

经过百度后发现,是因为我使用了自定义的拦截器,

如果在配置文件中加入了自定义的拦截器,那默认的拦截器就不会起作用,在Action中就不能取得表单的参数

这个时候,就需要显式地调用默认的拦截器defaultStack (注意顺序,先调用默认的拦截器) 


下面是我的代码:

输入参数的jsp:

<s:form action="load" method="post" name="myform">
<s:textfield label="用户名" name="user.uname"/><br/>
<s:textfield label="年龄" name="user.uyear"/><br/>
<s:textfield label="性别" name="user.usex"/><br/>
<s:submit value="确认"></s:submit>
</s:form>

action:

package simon;
import com.opensymphony.xwork2.ActionSupport;
import simon.userBean;
public class action extends ActionSupport{
	private userBean user;
	public userBean getUser() {
		return user;
	}
	public void setUser(userBean user) {
		this.user = user;
	}	
	public String execute() {
		return "success";
	}
}

struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
        <constant name="struts.enable.DynamicMethodInvocation" value="true" />
        <constant name="struts.devMode" value="true" />
	<package name="nothing" extends="struts-default">
		<interceptors>
			<interceptor name="inn" class="simon.Person" />
		</interceptors>		
		<action name="load" class="simon.action">
			<result name="success">/success.jsp</result>
			<interceptor-ref name="defaultStack"/> <!--注意顺序,先调用默认的拦截器-->
			<interceptor-ref name="inn"></interceptor-ref>
		</action>
	</package>
</struts>

结果jsp:

你输入的内容如下:<br/>
姓名:<s:property value="user.uname" /><br/>
年龄:<s:property value="user.uyear" /><br/>
性别:<s:property value="user.usex" />

“Struts2中很多的功能是用拦截器实现的,比如:取得表单参数,文件上传,异常处理等

Struts2会默认调用默认的拦截器,默认拦截器配置在struts-default.xml中可以查看

如果在配置文件中加入了自定义的拦截器,那默认的拦截器就不会起作用,在Action中就不能取得表单的参数”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值