Interceptor无法访问Action Parameters

我正在为struts2拦截器创建一个示例。 我创建了一个简单的登录页面,并使用自定义拦截器类来加密输入。 但是拦截器正在将ValueStack的输入值读为null

我不明白我做错了什么。 我想struts.xml和拦截器类就足够了。 如果您需要更多我的代码,请告诉我们。

在struts.xml

           /success.jsp /index.jsp    

拦截器.java文件

 package com.keyur.struts2.interceptors; import com.keyur.struts2.ActionClasses.validatorClass; import com.keyur.struts2.beans.EncryptorDecryptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; import com.opensymphony.xwork2.util.ValueStack; public class EncryptDecryptInterceptor implements Interceptor { EncryptorDecryptor encdec = new EncryptorDecryptor(); @Override public void destroy() { // TODO Auto-generated method stub } @Override public void init() { // TODO Auto-generated method stub } @Override public String intercept(ActionInvocation arg0) throws Exception { // TODO Auto-generated method stub String result = arg0.invoke(); ValueStack stack = arg0.getStack(); String username = stack.findString("username"); String password = stack.findString("password"); System.out.println("Username: "+((validatorClass)stack.peek()).getUsername()); System.out.println("Password: "+((validatorClass)stack.peek()).getPassword()); //System.out.println(username); //System.out.println(password); //stack.set("username", encdec.encryptText(username)); //stack.set("password", encdec.encryptText(password)); return result; } } 

EncryptorDecryptor是我定义的一个单独的类,它可以自己正常工作。

如果你想访问参数, params拦截器应该先行

     /success.jsp /index.jsp  

您的问题是这些参数没有转到valueStack ,您应该从动作上下文中获取它们。

 Map params = ActionContext.getContext().getParameters(); 

但是在params拦截器之后他们应该在那里。