我在Struts2中遇到一个奇怪的错误,我在尝试将属性设置为请求范围时遇到空指针异常,
Struts Problem Report
Struts检测到未处理 异常:消息:文件: 组织/阿帕奇/卡塔利娜/连接器/ Request.java 行号:1,424
Stacktraces
java.lang.NullPointerException
org.apache.catalina.connector.Request.setAttribute(Request.java:1424)
org.apache.catalina.connector.RequestFacade.setAttribute(RequestFacade.java:503)
javax.servlet.ServletRequestWrapper.setAttribute(ServletRequestWrapper.java:284)
com.inrev.bm.action.IRBrandMgmtAction.wrdTwts(IRBrandMgmtAction.java:81)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
我的代码如下,
public class IRBrandMgmtAction extends ActionSupport implements SessionAware,ServletRequestAware {
private static final long serialVersionUID = 1L;
private Map session;
private HttpServletRequest request;
private IRWordToTrack wrdtotrack;
private IRBrandMgmtDAO brandMgmtDAO;
private static org.apache.log4j.Logger log = Logger.getLogger(IRBrandMgmtAction.class);
以及发生这种情况的方法,
public String wrdTwts()
{
ArrayList<IRBrandTrackBean> messages = null;
IRDateUtil dtUtil = new IRDateUtil();
String wordId = request.getParameter("wordId");
IRUser user = (IRUser) session.get("user");
IRWordToTrack word = brandMgmtDAO.getWord(Integer.parseInt(wordId));
if(word!=null)
{
messages = brandMgmtDAO.viewMsgForUser(word.getWord().toUpperCase().trim(), null, dtUtil.getTimeZoneOffset(user.getTimeZone()));
}
request.setAttribute("messages",messages);
return "tweets";
}
我正在使用tomcat 6服务器。
此致 罗希特夏尔
答案 0 :(得分:1)
很难知道问题的原因,但我想到了三个建议:
答案 1 :(得分:1)
创建动作类RequestAware而不是ServletRequestAware可能是一个想法。
在您当前的代码中,您确定正在调用setServletRequest方法吗?您是否定义了导致默认拦截器被丢弃的任何自定义拦截器?在Session / Request意识到的情况下,我们对ServletConfigInterceptor感兴趣。
答案 2 :(得分:0)
使用,
PhantomData
PhantomData
获取请求和响应。
OR
首先调用此ServletActionContext.getResponse();