Java Struts2验证框架引发Hibernate异常

Java Struts2验证框架引发Hibernate异常,java,hibernate,struts2,hibernate-validator,Java,Hibernate,Struts2,Hibernate Validator,我正在使用struts2和hibernate。我正在使用struts2验证框架来验证表单字段。该项目也使用Hibernate,但我现在不想进行Hibernate验证,因为只有在我验证并提交表单时,才会进行struts2验证 我继承了这两种方法,即struct-default、hibernate-default。 我是否需要禁用Hibernate验证来修复该行为 (注意:我正在学习struts2框架,所以如果可能的话,请附上代码示例) 以下是struts.xml代码: <!DOCTYPE s

我正在使用struts2和hibernate。我正在使用struts2验证框架来验证表单字段。该项目也使用Hibernate,但我现在不想进行Hibernate验证,因为只有在我验证并提交表单时,才会进行struts2验证

我继承了这两种方法,即struct-default、hibernate-default。 我是否需要禁用Hibernate验证来修复该行为

(注意:我正在学习struts2框架,所以如果可能的话,请附上代码示例)

以下是struts.xml代码:

<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="default" extends="hibernate-default,struts-default">
<action name="saveOrUpdateUser" method="saveOrUpdate" class="com.tutorials4u.web.UserAction">
<result name="success" type="redirect">listUser</result>
<result name="input">listUser</result>  
</action>
<action name="listUser" method="list" class="com.tutorials4u.web.UserAction">
<result name="success">/register.jsp</result>       
</action>
<action name="editUser" method="edit" class="com.tutorials4u.web.UserAction">
<result name="success">/register.jsp</result>
</action>
<action name="deleteUser" method="delete"
        class="com.tutorials4u.web.UserAction">
<result name="success" type="redirect">listUser</result>
</action>
</package>
以下是DAOImpl代码:

public List<User> listUser() {  
    List<User> courses = null;
    try {
        courses = session.createQuery("from User").list();
    } catch (Exception e) {
        e.printStackTrace();
    } 
    return courses;
}

public void saveOrUpdateUser(User user) {
    try {
        session.saveOrUpdate(user);
    } catch (Exception e) {
        transaction.rollback();
        e.printStackTrace();
    } 
}

public void deleteUser(Long userId){
    try{
        User user = (User) session.get(User.class, userId);
        session.delete(user);
    }catch(Exception e){
        transaction.rollback();
        e.printStackTrace();
    }
}

public User listUserById(Long userId){
    User user = null;
    try{
        user = (User) session.get(User.class, userId);
    }catch(Exception ex){
        ex.printStackTrace();
    }
    return user;
}
公共列表listUser(){
列出课程=空;
试一试{
courses=session.createQuery(“来自用户”).list();
}捕获(例外e){
e、 printStackTrace();
} 
返回课程;
}
public void saveOrUpdateUser(用户){
试一试{
session.saveOrUpdate(用户);
}捕获(例外e){
transaction.rollback();
e、 printStackTrace();
} 
}
public void deleteUser(长用户ID){
试一试{
User=(User)session.get(User.class,userId);
删除(用户);
}捕获(例外e){
transaction.rollback();
e、 printStackTrace();
}
}
公共用户listUserById(长用户ID){
User=null;
试一试{
user=(user)session.get(user.class,userId);
}捕获(例外情况除外){
例如printStackTrace();
}
返回用户;
}

你能在UserDaoImpl中显示方法列表的代码吗?我已经更新了代码,所以什么是null?进行调试并验证你的会话是否为null。
<s:form action="saveOrUpdateUser">
<s:push value="user">
<s:hidden name="id" />
<s:textfield name="name" label="User Name" />
<s:radio name="gender" label="Gender" list="{'Male','Female'}" />
<s:select name="country" list="{'India','USA','UK'}" headerKey=""
        headerValue="Select" label="Select a country" />
<s:textarea name="aboutYou" label="About You" />
<s:checkbox name="mailingList"
        label="Would you like to join our mailing list?" />
<s:submit/>
</s:push>
</s:form>
In validate method 
java.lang.NullPointerException
at com.tutorials4u.dao.UserDAOImpl.listUser(UserDAOImpl.java:23)
at com.tutorials4u.web.UserAction.list(UserAction.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
public List<User> listUser() {  
    List<User> courses = null;
    try {
        courses = session.createQuery("from User").list();
    } catch (Exception e) {
        e.printStackTrace();
    } 
    return courses;
}

public void saveOrUpdateUser(User user) {
    try {
        session.saveOrUpdate(user);
    } catch (Exception e) {
        transaction.rollback();
        e.printStackTrace();
    } 
}

public void deleteUser(Long userId){
    try{
        User user = (User) session.get(User.class, userId);
        session.delete(user);
    }catch(Exception e){
        transaction.rollback();
        e.printStackTrace();
    }
}

public User listUserById(Long userId){
    User user = null;
    try{
        user = (User) session.get(User.class, userId);
    }catch(Exception ex){
        ex.printStackTrace();
    }
    return user;
}