我在hibernate 里面订单表(consume)关联了 customer表
查询显示的时候
${consume.customer.customerName}
报这个表达式有问题
后查,数据库里面两张表里面的关联关系查询customer没数据
然后我加判断
<c:if test="${!empty consume.customer}">
${consume.customer.customerName}
</c:if>
这样他还是报el表达式解析为空
如何?
查询显示的时候
${consume.customer.customerName}
报这个表达式有问题
后查,数据库里面两张表里面的关联关系查询customer没数据
然后我加判断
<c:if test="${!empty consume.customer}">
${consume.customer.customerName}
</c:if>
这样他还是报el表达式解析为空
如何?
</c:if>
我用STRUTS2标签也遇到这问题..在这里面用EL总是没有值..
后面我改用<s:set >
然后在IF中用这个SET的值.不知道这根STRUTS2标签一样吗??希望对你有帮助.呵呵
<c:if test="${not empty consume.customer}">
customer在没有数据的情况下
consume.customer 会报空
用c:if test="${not empty consume.customer}">
还是会报异常
我也是这样写${consume.customer.customerName},但是没有问题哦,照样可以访问,没有报空。
不过我的consume跟customer是一对一的关系。
我也是这样写${consume.customer.customerName},但是没有问题哦,照样可以访问,没有报空。
不过我的consume跟customer是一对一的关系。
现在确定consumer.customerid 关联不到customer.customerid
也就是说数据库里面consumer.customerid 在customer表里面没数据
在数据库里面没建外键关联,也就是数据不完整,在这种情况下抱的异常
如果有数据的话就不会报异常了
现在就是解决数据有异常的情况下, 如何更健壮!
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: javax.el.ELException: Error reading 'customerName' on type com.gpdi.common.entity.TCustomer$$EnhancerByCGLIB$$f5343126
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.gpdi.common.filter.EndoceFilter.doFilter(EndoceFilter.java:61)
com.gpdi.common.filter.AuthFilter.doFilter(AuthFilter.java:46)
root cause javax.el.ELException: Error reading 'customerName' on type com.gpdi.common.entity.TCustomer$$EnhancerByCGLIB$$f5343126
javax.el.BeanELResolver.getValue(BeanELResolver.java:66)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
org.apache.el.parser.AstValue.getValue(AstValue.java:114)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)
org.apache.jsp.main.consume.queryConsume_jsp._jspService(queryConsume_jsp.java:438)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.gpdi.common.filter.EndoceFilter.doFilter(EndoceFilter.java:61)
com.gpdi.common.filter.AuthFilter.doFilter(AuthFilter.java:46)
root cause org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.gpdi.common.entity.TCustomer#27921]
org.hibernate.ObjectNotFoundException.throwIfNull(ObjectNotFoundException.java:27)
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:65)
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:98)
org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:158)
com.gpdi.common.entity.TCustomer$$EnhancerByCGLIB$$f5343126.getCustomerName(<generated>)
sun.reflect.GeneratedMethodAccessor73.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
org.apache.el.parser.AstValue.getValue(AstValue.java:114)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)
org.apache.jsp.main.consume.queryConsume_jsp._jspService(queryConsume_jsp.java:438)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.gpdi.common.filter.EndoceFilter.doFilter(EndoceFilter.java:61)
com.gpdi.common.filter.AuthFilter.doFilter(AuthFilter.java:46)
再加一个判断试试
不知道你的后台SQL是怎么写的,consume.customer有可能不是empty,而是返回都是null字段的记录
<c:if test="${not empty consume.customer}">
<c:if test="${consume.customer.customerName != null}">
${consume.customer.customerName}
</c:if>
</c:if>
呵呵,就是判断的时候报异常
c:if test="${not empty consume.customer}">
因为consume.customer已经为空了
${consume.customer.customerName}
</c:if>
这么做试试,
答对了记得加分
没答对也要加分
哈哈