2016-05-17 5 views
1

Я новичок в структуре Struts. Поэтому искали некоторые онлайн-уроки и пытались разработать очень простое приложение. Перед использованием перехватчиков я могу получить доступ к значениям имени пользователя и пароля в классе действий, но после включения перехватчиков я получаю имя пользователя и пароль как null в методе выполнения класса действия. Как я могу получить значения имени пользователя и пароля внутри класса действия?Свойства класса действия Struts становятся нулевыми после использования myinterceptors

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> 

перехватчик класса

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; 
    } 
} 

класс Действие

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 

ответ

1

В конфигурации действий вы переопределены конфигурацию перехватчики. 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> 
+0

поэтому, я должен добавить перехватчик defaultStack вместе с моим перехватчиком в действии config right ..? – san544

+0

wow блестящий, он работает сейчас. спасибо большое @ Roman C – san544