今天学到使用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中就不能取得表单的参数”