Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring MVC/Hibernate-NullValueInTestedPathException,无效属性,嵌套属性的值为null?_Hibernate_Spring Mvc - Fatal编程技术网

Spring MVC/Hibernate-NullValueInTestedPathException,无效属性,嵌套属性的值为null?

Spring MVC/Hibernate-NullValueInTestedPathException,无效属性,嵌套属性的值为null?,hibernate,spring-mvc,Hibernate,Spring Mvc,我们目前正在SpringMVC中增强一个已经存在的web应用程序(我正在学习这个框架)。我尝试将另一个属性添加到正在推入数据库的对象中(我也添加了相应的列),但我一直得到NullValueInTestedPathException错误 我已经尝试过谷歌,建议如下: 1) 显式声明新属性的构造函数(已尝试,未解决) 2) 确保实例化新对象(已尝试,但未解决) 3) 仔细检查属性的getter/setter(它们正常,不是错误) 4) 创建serialVersionUID(不!) 5) 使用调试功能

我们目前正在SpringMVC中增强一个已经存在的web应用程序(我正在学习这个框架)。我尝试将另一个属性添加到正在推入数据库的对象中(我也添加了相应的列),但我一直得到
NullValueInTestedPathException
错误

我已经尝试过谷歌,建议如下:

1) 显式声明新属性的构造函数(已尝试,未解决)
2) 确保实例化新对象(已尝试,但未解决)
3) 仔细检查属性的getter/setter(它们正常,不是错误)
4) 创建serialVersionUID(不!)
5) 使用调试功能(我使用了,并且我发现该属性为null)

请帮忙!T.T以下是代码:

新物业的VO:

public class ShiftAssignmentLookupVO implements Serializable{

    ...
    public ShiftAssignmentLookupVO(){}

    public String getShiftAssignmentStringValue(){
     return shiftAssignmentStringValue;
    }
    public void setShiftAssignmentStringValue(String shiftAssignmentStringValue){
     this.shiftAssignmentStringValue = shiftAssignmentStringValue;
    }
    ...
}
public class EmployeeCalendarVO implements Serializable {
    ...
    //the new property:
    private ShiftAssignmentLookupVO shiftAssignmentVO = new ShiftAssignmentLookupVO();

    public void setShiftAssignmentVO(ShiftAssignmentLookupVO shiftAssignmentVO){
      this.shiftAssignmentVO = shiftAssignmentVO;
    }
    public ShiftAssignmentLookupVO getShiftAssignmentVO(){
      return shiftAssignmentVO;
    }
    ...
}
<spring:bind path = "employeecalendar.empCalList[${ecl.index}].shiftAssignmentVO.shiftAssignmentID">
   ...
</spring:bind>
包含属性的对象的VO:

public class ShiftAssignmentLookupVO implements Serializable{

    ...
    public ShiftAssignmentLookupVO(){}

    public String getShiftAssignmentStringValue(){
     return shiftAssignmentStringValue;
    }
    public void setShiftAssignmentStringValue(String shiftAssignmentStringValue){
     this.shiftAssignmentStringValue = shiftAssignmentStringValue;
    }
    ...
}
public class EmployeeCalendarVO implements Serializable {
    ...
    //the new property:
    private ShiftAssignmentLookupVO shiftAssignmentVO = new ShiftAssignmentLookupVO();

    public void setShiftAssignmentVO(ShiftAssignmentLookupVO shiftAssignmentVO){
      this.shiftAssignmentVO = shiftAssignmentVO;
    }
    public ShiftAssignmentLookupVO getShiftAssignmentVO(){
      return shiftAssignmentVO;
    }
    ...
}
<spring:bind path = "employeecalendar.empCalList[${ecl.index}].shiftAssignmentVO.shiftAssignmentID">
   ...
</spring:bind>
下面是hibernate映射:

<class name = "EmployeeCalendarVO" table = "EMP_WRK_CDR">
    ...
    <many-to-one name = "shiftAssignmentVO" lazy = "false">
        <column name = "ID_ASSIGNMENT" />
    </many-to-one>
    ...
</class>

...
...
我尝试访问属性的jsp:

public class ShiftAssignmentLookupVO implements Serializable{

    ...
    public ShiftAssignmentLookupVO(){}

    public String getShiftAssignmentStringValue(){
     return shiftAssignmentStringValue;
    }
    public void setShiftAssignmentStringValue(String shiftAssignmentStringValue){
     this.shiftAssignmentStringValue = shiftAssignmentStringValue;
    }
    ...
}
public class EmployeeCalendarVO implements Serializable {
    ...
    //the new property:
    private ShiftAssignmentLookupVO shiftAssignmentVO = new ShiftAssignmentLookupVO();

    public void setShiftAssignmentVO(ShiftAssignmentLookupVO shiftAssignmentVO){
      this.shiftAssignmentVO = shiftAssignmentVO;
    }
    public ShiftAssignmentLookupVO getShiftAssignmentVO(){
      return shiftAssignmentVO;
    }
    ...
}
<spring:bind path = "employeecalendar.empCalList[${ecl.index}].shiftAssignmentVO.shiftAssignmentID">
   ...
</spring:bind>

...
最后(哇!)堆栈跟踪:

Aug 8, 2013 10:36:18 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet dtr threw exception
org.springframework.beans.NullValueInNestedPathException: Invalid property     'empCalList[0].shiftAssignmentVO' of bean class     [com.safeway.dtr.employee.vo.EmpCalManager]: Value of nested property     'empCalList[0].shiftAssignmentVO' is null
    at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:443)
    at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:418)
    at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:419)
    at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:524)
    at org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:78)
    at org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:337)
    at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:119)
at org.springframework.web.servlet.tags.BindTag.doStartTagInternal(BindTag.java:116)
    at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:77)
    at org.apache.jsp.WEB_002dINF.jsp.employee.employeecalendar_jsp._jspService(employeecalendar_jsp.java:1184)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:624)
    at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:135)
    at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:149)
    at org.apache.struts.tiles.taglib.InsertTag.doInclude(InsertTag.java:761)
    at org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:893)
    at org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:462)
    at org.apache.jsp.WEB_002dINF.jsp.defaultLayout_jsp._jspx_meth_tiles_005finsert_005f1(defaultLayout_jsp.java:286)
    at org.apache.jsp.WEB_002dINF.jsp.defaultLayout_jsp._jspService(defaultLayout_jsp.java:115)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:145)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:251)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1144)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:880)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:793)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:595)
2013年8月8日上午10:36:18 org.apache.catalina.core.StandardWrapperValve调用
严重:Servlet dtr的Servlet.service()引发异常
org.springframework.beans.NullValueInTestedPathException:无效的bean类[com.safeway.dtr.employee.vo.employee Manager]的属性'empCalList[0].shiftAssignmentVO'的值为null
位于org.springframework.beans.BeanWrapperImpl.getnestedbeanwraper(BeanWrapperImpl.java:443)
位于org.springframework.beans.BeanWrapperImpl.getbeanwrapperformertypath(BeanWrapperImpl.java:418)
位于org.springframework.beans.BeanWrapperImpl.getbeanwrapperformertypath(BeanWrapperImpl.java:419)
位于org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:524)
位于org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:78)
位于org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:337)
位于org.springframework.web.servlet.support.BindStatus。(BindStatus.java:119)
位于org.springframework.web.servlet.tags.BindTag.doStartTagInternal(BindTag.java:116)
位于org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:77)
位于org.apache.jsp.WEB_002dINF.jsp.employee.employeecalendar_jsp._jsp服务(employeecalendar_jsp.java:1184)
位于org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
位于org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
位于org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
位于org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
位于org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
位于org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
位于org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:624)
位于org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:135)
位于org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:149)
位于org.apache.struts.tiles.taglib.InsertTag.doInclude(InsertTag.java:761)
位于org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:893)
位于org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:462)
在org.apache.jsp.WEB\u 002dINF.jsp.defaultLayout\u jsp.\u jspx\u meth\u tiles\u 005finsert\u 005f1(defaultLayout\u jsp.java:286)
在org.apache.jsp.WEB_002dINF.jsp.defaultLayout_jsp.\u jsp服务(defaultLayout_jsp.java:115)上
位于org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
位于org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
位于org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
位于org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
位于org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
位于org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
位于org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:145)
位于org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:251)
位于org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1144)
位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:880)
位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:793)
位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
在org.springframework.web.servlet.FrameworkServlet.doGet(F