Struts 操作 class 属性在使用 myinterceptors 后变为空
Struts action class properties are getting null after using myinterceptors
我是 Struts 框架的新手。所以寻求一些在线教程并尝试开发一个非常基本的应用程序。在使用拦截器之前,我能够在操作 class 中访问用户名和密码值,但是在涉及拦截器之后,我在操作 class 执行方法中将用户名和密码设置为 null。我如何在操作 class?
中获取用户名和密码的值
login.jsp
<s:form action="login.action">
<s:actionerror cssStyle="color:red"/>
<s:textfield name="username" label="Username"/>
<s:password name="password" label="Password"/>
<s:submit value="Go"/>
</s:form>
拦截器class
public class MyInterceptors extends AbstractInterceptor {
/**
*
*/
private static final long serialVersionUID = 1L;
public String intercept(ActionInvocation invocation)throws Exception{
/* let us do some pre-processing */
String output = "Pre-Processing";
System.out.println(output);
/* let us call action or next interceptor */
String result = invocation.invoke();
/* let us do some post-processing */
output = "Post-Processing";
System.out.println(output);
return result;
}
}
动作class
public class LoginAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private String username;
private String password;
public String execute() {
System.out.println("Action Result.."+getUsername());
return "success";
}
//getters and setters
}
struts.xml
.....
<interceptors>
<interceptor name="myinterceptor"
class="com.techm.interceptors.MyInterceptors" />
</interceptors>
<action name="login" class="com.techm.actions.LoginAction">
<interceptor-ref name="myinterceptor"></interceptor-ref>
<result name="success">Success.jsp</result>
<result name="error">Login.jsp</result>
</action>
.....
控制台执行结果为:
Pre-Processing
Action Result..null
Post-Processing
在操作配置中,您已经覆盖了拦截器配置。 Struts 默认配置为使用默认的拦截器堆栈,即使您在操作配置中不使用任何拦截器也是如此。通过覆盖拦截器你犯了一个错误。您应该在特定的操作配置中添加 defaultStack
。
<action name="login" class="com.techm.actions.LoginAction">
<interceptor-ref name="myinterceptor">
<interceptor-ref name="defaultStack"/>
<result name="success">Success.jsp</result>
<result name="error">Login.jsp</result>
</action>
我是 Struts 框架的新手。所以寻求一些在线教程并尝试开发一个非常基本的应用程序。在使用拦截器之前,我能够在操作 class 中访问用户名和密码值,但是在涉及拦截器之后,我在操作 class 执行方法中将用户名和密码设置为 null。我如何在操作 class?
中获取用户名和密码的值login.jsp
<s:form action="login.action">
<s:actionerror cssStyle="color:red"/>
<s:textfield name="username" label="Username"/>
<s:password name="password" label="Password"/>
<s:submit value="Go"/>
</s:form>
拦截器class
public class MyInterceptors extends AbstractInterceptor {
/**
*
*/
private static final long serialVersionUID = 1L;
public String intercept(ActionInvocation invocation)throws Exception{
/* let us do some pre-processing */
String output = "Pre-Processing";
System.out.println(output);
/* let us call action or next interceptor */
String result = invocation.invoke();
/* let us do some post-processing */
output = "Post-Processing";
System.out.println(output);
return result;
}
}
动作class
public class LoginAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private String username;
private String password;
public String execute() {
System.out.println("Action Result.."+getUsername());
return "success";
}
//getters and setters
}
struts.xml
.....
<interceptors>
<interceptor name="myinterceptor"
class="com.techm.interceptors.MyInterceptors" />
</interceptors>
<action name="login" class="com.techm.actions.LoginAction">
<interceptor-ref name="myinterceptor"></interceptor-ref>
<result name="success">Success.jsp</result>
<result name="error">Login.jsp</result>
</action>
.....
控制台执行结果为:
Pre-Processing
Action Result..null
Post-Processing
在操作配置中,您已经覆盖了拦截器配置。 Struts 默认配置为使用默认的拦截器堆栈,即使您在操作配置中不使用任何拦截器也是如此。通过覆盖拦截器你犯了一个错误。您应该在特定的操作配置中添加 defaultStack
。
<action name="login" class="com.techm.actions.LoginAction">
<interceptor-ref name="myinterceptor">
<interceptor-ref name="defaultStack"/>
<result name="success">Success.jsp</result>
<result name="error">Login.jsp</result>
</action>