java.lang.NullPointerException
com.action.ComplainAction.addComplain(ComplainAction.java:47)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
package com.action;
import java.util.Map;
import com.dao.impl.ComplainDAO;
import com.model.Complain;
import com.service.IComplainService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ComplainAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = -2724671938834252612L;
private int Complainid;
private Complain complain;
private IComplainService complainService;
public IComplainService getComplainService() {
return complainService;
}
public void setComplainService(IComplainService complainService) {
this.complainService = complainService;
}
public Complain getComplain() {
return complain;
}
public void setComplain(Complain complain) {
this.complain = complain;
}
public int getComplainid() {
return Complainid;
}
public void setComplainid(int complainid) {
Complainid = complainid;
}
@SuppressWarnings("unused")
public String addComplain()throws Exception
{
@SuppressWarnings("rawtypes")
Map session=(Map) ActionContext.getContext().getSession();
Complain complain1 = new Complain();
complain1.setUserName(complain.getUserName());
complain1.setUserPhone(complain.getUserPhone());
complain1.setUserAddress(complain.getUserAddress());
complain1.setComplainContent(complain.getComplainContent());
complain1.setComplainState(complain.getComplainState());
complain1.setComplainType(complain.getComplainType());
if(complainService.addComplain(complain1)){
return SUCCESS;
}
else{
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String updateComplain()throws Exception
{
@SuppressWarnings("rawtypes")
Map session=(Map) ActionContext.getContext().getSession();
Complain complain1 = (Complain)session.get("complain");
complain1.setUserName(complain.getUserName());
complain1.setUserPhone(complain.getUserPhone());
complain1.setUserAddress(complain.getUserAddress());
complain1.setComplainContent(complain.getComplainContent());
complain1.setComplainState(complain.getComplainState());
complain1.setComplainType(complain.getComplainType());
complain1.setCreateTime(complain.getCreateTime());
if(complainService.updateComplain(complain1))
{
session.put("complain", complain1);
return SUCCESS;
}
else{
return ERROR;
}
}
public String deleteComplain()throws Exception
{
complainService.deleteComplainById(Complainid);
System.out.println("delete");
return SUCCESS;
}
}
package com.dao.impl;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.dao.IComplainDAO;
import com.model.Complain;
public class ComplainDAO implements IComplainDAO {
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public boolean deleteComplainById(int id){
// TODO Auto-generated method stub
Session session=sessionFactory.openSession();
Transaction ts=session.beginTransaction();
Query query=session.createQuery("from Complain where complainid="+id);
List Complains=query.list();
session.delete((Complain) Complains.get(0));
ts.commit();
session.close();
return true;
}
@Override
public boolean addComplain(Complain complain) {
// TODO Auto-generated method stub
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
session.save(complain);
ts.commit();
session.close();
return true;
}
@Override
public boolean updateComplain(Complain complain) {
// TODO Auto-generated method stub
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
session.update(complain);
ts.commit();
session.close();
return true;
}
}
package com.dao;
import java.util.List;
import com.model.Complain;
public interface IComplainDAO {
public boolean addComplain(Complain complain);
public boolean updateComplain(Complain complain);
public boolean deleteComplainById(int id);
}
package com.service;
import java.util.List;
import com.model.Complain;
public interface IComplainService {
public boolean addComplain(Complain complain);
public boolean updateComplain(Complain complain);
public boolean deleteComplainById(int id);
}
package com.service.impl;
import java.util.List;
import com.dao.IComplainDAO;
import com.model.Complain;
import com.dao.impl.ComplainDAO;
import com.service.IComplainService;
public class ComplainService implements IComplainService{
private IComplainDAO ComplainDAO;
public IComplainDAO getComplainDAO() {
return ComplainDAO;
}
public void setComplainDAO(IComplainDAO ComplainDAO) {
this.ComplainDAO = ComplainDAO;
}
@Override
public boolean addComplain(Complain complain) {
// TODO Auto-generated method stub
return ComplainDAO.addComplain(complain);
}
@Override
public boolean updateComplain(Complain complain) {
// TODO Auto-generated method stub
return ComplainDAO.updateComplain(complain);
}
@Override
public boolean deleteComplainById(int id) {
// TODO Auto-generated method stub
return ComplainDAO.deleteComplainById(id);
}
}
package com.model;
import java.sql.Timestamp;
/**
public class Complain implements java.io.Serializable {
// Fields
private Integer complainid;
private String userName;
private String userPhone;
private String userAddress;
private String complainType;
private String complainContent;
private Integer complainState;
private Timestamp createTime;
// Constructors
/** default constructor */
public Complain() {
}
/** full constructor */
public Complain(String userName, String userPhone, String userAddress,
String complainType, String complainContent, Integer complainState,
Timestamp createTime) {
this.userName = userName;
this.userPhone = userPhone;
this.userAddress = userAddress;
this.complainType = complainType;
this.complainContent = complainContent;
this.complainState = complainState;
this.createTime = createTime;
}
// Property accessors
public Integer getComplainid() {
return this.complainid;
}
public void setComplainid(Integer complainid) {
this.complainid = complainid;
}
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPhone() {
return this.userPhone;
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
public String getUserAddress() {
return this.userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
public String getComplainType() {
return this.complainType;
}
public void setComplainType(String complainType) {
this.complainType = complainType;
}
public String getComplainContent() {
return this.complainContent;
}
public void setComplainContent(String complainContent) {
this.complainContent = complainContent;
}
public Integer getComplainState() {
return this.complainState;
}
public void setComplainState(Integer complainState) {
this.complainState = complainState;
}
public Timestamp getCreateTime() {
return this.createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
}
你的那个action报空指针异常了
是complainService为空,如果你使用了Spring的话,并且启用了自动装配的话。应该在那个setComplainService(IComplainService complainService上面加一个@Autowired注解,
@Autowired
public void setComplainService(IComplainService complainService) {
this.complainService = complainService;
}