Caused by: java.lang.NullPointerException
at org.apache.struts2.ServletActionContext.getRequest(ServletActionContext.java:112)
at stu.action.SelectAction.(SelectAction.java:29)
SelectAction 構造器中(第 29 行)調用了 ServletActionContext.getRequest(),但此時 **Struts2 尚未初始化完成**,ThreadLocal 中無 Request 對象,導致 NPE。
public class SelectAction extends ActionSupport {
private HttpServletRequest request = ServletActionContext.getRequest(); // 錯誤!構造期調用
// ...
}
public String execute() {
HttpServletRequest request = ServletActionContext.getRequest(); // 正確:Action 執行期
// 使用 request
return SUCCESS;
}
public class SelectAction extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request; // 框架自動注入
}
}
selectAction bean 定義錯誤(如 scope=prototype 導致多實例)struts2-core、spring-web 版本一致性SelectAction 構造器打斷點,觀察調用棧<constant name="struts.devMode" value="true"/>Caused by