严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at com.test.action.RegistAction.registe(RegistAction.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)package com.test.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;public class RegistAction extends ActionSupport 
implements ServletRequestAware,
ServletResponseAware,ModelDriven
{
/**
 * 
 */
private static final long serialVersionUID = 1L;
private HttpServletRequest req;
private HttpServletResponse res;

public HttpServletRequest getReq() {
return req;
} public void setReq(HttpServletRequest req) {
this.req = req;
} public HttpServletResponse getRes() {
return res;
} public void setRes(HttpServletResponse res) {
this.res = res;
}
public String registe() throws Exception {
// TODO Auto-generated method stub
// String yhlx=(String)req.getAttribute("yhlx");
String yhlx=req.getParameter("yhlx");
if(yhlx.equals("0")){

}
// else if(yhlx.equals("1")){
// return "success2";
// }else if(yhlx.equals("2")){
// return "success3";
// }
// return "success1";
return "SUCCESS";
} public void setServletRequest(HttpServletRequest arg0) {
// TODO Auto-generated method stub

} public void setServletResponse(HttpServletResponse arg0) {
// TODO Auto-generated method stub

} public Object getModel() {
// TODO Auto-generated method stub
return null;
}}

解决方案 »

  1.   

    String yhlx=req.getParameter("yhlx");   //line43
    要先获和req对象。
      

  2.   

    nullpointerException
    检查以上两个红色变量建议把if(yhlx.equals("0"))改成if(“0”.equals(yhlx))
      

  3.   

    1。没看到外部传入req
    2。检查yhlx和jsp属性名是否相同
    3。ls说的对,习惯要养成
      

  4.   

    建议把if(yhlx.equals("0"))改成if(“0”.equals(yhlx))
      

  5.   

    1.出现问题:String yhlx=req.getParameter("yhlx"); 2.修改:  1>.把以下代码删掉
    public HttpServletRequest getReq() {
    return req;
    }public void setReq(HttpServletRequest req) {
    this.req = req;
    }public HttpServletResponse getRes() {
    return res;
    }public void setRes(HttpServletResponse res) {
    this.res = res;
    }  2>.setServletRequest和setServletResponse方法修改成以下形式:public void setServletRequest(HttpServletRequest arg0) {
     this.req= arg0;
    }public void setServletResponse(HttpServletResponse arg0) {
    this.res = arg0;
    }
      

  6.   

    Struts2 了,还用这种方法?req.getParameter("yhlx");
    直接在action中提供yhlx的get,set 方法。yhlx用隐藏域传过来就行了
      

  7.   

    ServletActionContext.getRequest().getParameter("yhlx");
    直接用这个也行