首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用my拦截器后,Struts操作类属性将变为空。

使用my拦截器后,Struts操作类属性将变为空。
EN

Stack Overflow用户
提问于 2016-05-17 07:36:43
回答 1查看 805关注 0票数 1

我是Struts框架的新手。因此,寻找一些在线教程,并试图开发一个非常基本的应用程序。在使用之前,拦截器能够访问action类中的用户名和密码值,但在涉及到拦截器之后,在action类执行方法中将获得用户名和密码为null。如何在操作类中获取用户名和密码的值?

login.jsp

代码语言:javascript
复制
<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>

拦截器类

代码语言:javascript
复制
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;
   }
}

操作类

代码语言:javascript
复制
    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

代码语言:javascript
复制
.....
<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>
.....

在控制台中执行的结果是:

代码语言:javascript
复制
Pre-Processing
Action Result..null
Post-Processing
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-17 07:52:54

在操作配置中,您已经重写了拦截器配置。Struts默认配置为使用默认的拦截器堆栈,即使在操作配置中不使用任何拦截器。通过覆盖拦截器,您犯了一个错误。您应该在特定的操作配置中添加一个defaultStack

代码语言:javascript
复制
<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> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37269927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档