按书上敲入代码 将JSP提交的表单封装成一个JAVABEAN,运行jsp后可以看到表单 但提交时报错 。请问是什么原因?
本帖最后由 xiulidefeng2012 于 2012-11-19 13:49:20 编辑 按书上敲入代码 将JSP提交的表单封装成一个JAVABEAN,运行jsp后可以看到表单 但提交时报错 。请问是什么原因?
报错如下:
java.lang.NullPointerException
controller.Login.validate(Login.java:19)
com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:235)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:247)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
[最优解释]
请问一下你的javabean有不有get set方法呢
[其他解释]
controller.Login.validate(Login.java:19)
Please look validate 19 Line
NullPointerException
[其他解释]
你的jsp页面中表单的name是不是 loginInfoRef.属性名呢,还有你的javabean有没有get set方法
[其他解释]
if(null!=loginInfoRef.getPassword()&&"".equals(loginInfoRef.getPassword())){
this.addFieldError("loginInfoRef.password","对不起,密码不可以为空!");
}
[其他解释]
entity 实体类里没有属性的get set方法 。??
[其他解释]
controller.Login.validate(Login.java:19)
////控制台已经说了Login类的第19行,引发了一个空指针。
如果表单有输入数据,那么你提交的时候报出nullpoint,应该是表单的数据提交时没有被封装到bean中去。
看下bean中,有没有设置属性的方法。get/set
[其他解释]
if(null!=loginInfoRef.getUsername()&&"".equals(loginInfoRef.getUsername())){
this.addFieldError("loginInfoRef.username","对不起,用户名不可以为空!");
}
if(null!=loginInfoRef.getPassword()"".equals(loginInfoRef.getPassword())){
this.addFieldError("loginInfoRef.password","对不起,密码不可以为空!");
}
[其他解释]
package controller;
import com.opensymphony.xwork2.ActionSupport;
import entity.LoginInfo;
public class Login extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private LoginInfo loginInfoRef;
public LoginInfo getLoginInfoRef(){
return loginInfoRef;
}
public void setLoginInRef(LoginInfo loginInfoRef){
this.loginInfoRef=loginInfoRef;
}
@Override
public void validate(){
super.validate();
if("".equals(loginInfoRef.getUsername())){
this.addFieldError("loginInfoRef.username","对不起,用户名不可以为空!");
}
if("".equals(loginInfoRef.getPassword())){
this.addFieldError("loginInfoRef.password","对不起,密码不可以为空!");
}
}
public String execute(){
if(loginInfoRef.getUsername().equals("ghy")&&loginInfoRef.getPassword().equals("123")){
return SUCCESS;
}
else{
return ERROR;
}
}
}
这是我按书上写的login.java 代码
[其他解释]