my programer had occuered a problem.i have a Movie class,person class,role class,when i populator some data,i new a persion playedin(Movie),then i serch the movie,and want it show role.name,and it throw exception,i use neo4j db(spring-data-neo4j:3.2.2.RELEASE),i always can not get the value like this<c:forEach items="${movie.roles}" var="role"> <c:set var="actor" value="${role.actor}" />
domain model
@NodeEntity
public class Movie {
@GraphId
Long nodeId;
@Indexed(indexType = IndexType.FULLTEXT, indexName = "id")
String id;
@Indexed(indexType = IndexType.FULLTEXT, indexName = "search",numeric=false)
String title;
String description;
@RelatedTo(type = "DIRECTED", direction = INCOMING)
Person director;
@RelatedTo(type = "ACTS_IN", direction = INCOMING)
Set<Person> actors;
@RelatedToVia(elementClass = Role.class,type = "ACTS_IN", direction = INCOMING)
Iterable<Role> roles;
@RelatedToVia(elementClass = Rating.class,type = "RATED", direction = INCOMING)
@Fetch
Iterable<Rating> ratings;
@NodeEntity
public class Person {
@GraphId
Long nodeId;
@Indexed(unique=true)
String id;
@Indexed(indexType = IndexType.FULLTEXT, indexName = "people")
String name;
@RelationshipEntity(type = "ACTS_IN")
public class Role {
@GraphId Long id;
@EndNode Movie movie;
@StartNode Person actor;
String name;
jsp
<h2>Cast</h2>
<c:if test="${not empty movie.roles}">
<ul class="actors-list">
<c:forEach items="${movie.roles}" var="role">
<c:set var="actor" value="${role.actor}" />
<li><c:set var="image" value="${actor.profileImageUrl}" />
<c:if test="${empty image}">
<c:set var="image"
value="/images/profile-placeholder-small.png" />
</c:if> <a class="actor-image"
href="<c:url value="/actors/${actor.id}" />"><img
alt="${actor.name}" src="<c:url value="${image}" />" /></a> <a
href="<c:url value="/actors/${actor.id}" />"><c:out
value="${actor.name}" /> as <c:out value="${role.name}" /></a>
</li>
</c:forEach>
</ul>
<div class="break"></div>
</c:if>
controller
@RequestMapping(value = "/movies/{movieId}", method = RequestMethod.GET, headers = "Accept=text/html")
public String singleMovieView(final Model model, @PathVariable String movieId) {
//User user = addUser(model,request);
Movie movie = populator.findMovieById(movieId);
model.addAttribute("id", movieId);
if (movie != null) {
model.addAttribute("movie", movie);
final int stars = movie.getStars();
model.addAttribute("stars", stars);
Rating rating = null;
/*if (user != null)
rating = movie.getRelationshipTo(user, Rating.class, "RATED");*/
if (rating == null)
rating = new Rating().rate(stars, null);
model.addAttribute("userRating", rating);
}
return "movies/show";
}
error info
16:35:02.867 [http-nio-8080-exec-11] DEBUG o.s.web.servlet.DispatcherServlet - Error rendering view [org.springframework.web.servlet.view.JstlView: name 'movies/show'; URL [/pages/movies/show.jsp]] in DispatcherServlet with name 'context'
org.apache.jasper.JasperException: javax.el.ELException: Error reading 'roles' on type com.oberon.fm.domain.Movie
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) ~[jasper.jar:8.0.15]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) ~[jasper.jar:8.0.15]
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) ~[jasper.jar:8.0.15]
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) ~[jasper.jar:8.0.15]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) [servlet-api.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) [catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.15]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.0.15]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721) ~[catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466) ~[catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391) ~[catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318) ~[catalina.jar:8.0.15]
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) ~[spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) [spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) [spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) [spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) [spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) [spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) [spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) [servlet-api.jar:na]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) [spring-webmvc-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) [servlet-api.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) [catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.15]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.0.15]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.15]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) [spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.15]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) [catalina.jar:8.0.15]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [catalina.jar:8.0.15]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) [catalina.jar:8.0.15]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) [catalina.jar:8.0.15]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.0.15]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) [catalina.jar:8.0.15]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [catalina.jar:8.0.15]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) [catalina.jar:8.0.15]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) [tomcat-coyote.jar:8.0.15]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) [tomcat-coyote.jar:8.0.15]
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) [tomcat-coyote.jar:8.0.15]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556) [tomcat-coyote.jar:8.0.15]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513) [tomcat-coyote.jar:8.0.15]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_05]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_05]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.15]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_05]
Caused by: javax.el.ELException: Error reading 'roles' on type com.oberon.fm.domain.Movie
at javax.el.BeanELResolver.getValue(BeanELResolver.java:101) ~[el-api.jar:3.0.FR]
at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110) ~[jasper.jar:8.0.15]
at org.apache.el.parser.AstValue.getValue(AstValue.java:167) ~[jasper-el.jar:8.0.15]
at org.apache.el.parser.AstEmpty.getValue(AstEmpty.java:46) ~[jasper-el.jar:8.0.15]
at org.apache.el.parser.AstNot.getValue(AstNot.java:43) ~[jasper-el.jar:8.0.15]
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) ~[jasper-el.jar:8.0.15]
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:957) ~[jasper.jar:8.0.15]
at org.apache.jsp.pages.movies.show_jsp._jspx_meth_c_005fif_005f3(show_jsp.java:1003) ~[na:na]
at org.apache.jsp.pages.movies.show_jsp._jspx_meth_c_005fwhen_005f1(show_jsp.java:584) ~[na:na]
at org.apache.jsp.pages.movies.show_jsp._jspx_meth_c_005fchoose_005f1(show_jsp.java:397) ~[na:na]
at org.apache.jsp.pages.movies.show_jsp._jspService(show_jsp.java:157) ~[na:na]
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) ~[jasper.jar:8.0.15]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) [servlet-api.jar:na]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) ~[jasper.jar:8.0.15]
... 49 common frames omitted
Caused by: org.neo4j.graphdb.NotInTransactionException: null
at org.neo4j.kernel.impl.persistence.PersistenceManager.getCurrentTransaction(PersistenceManager.java:297) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.persistence.PersistenceManager.getResource(PersistenceManager.java:249) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.persistence.PersistenceManager.currentKernelTransactionForReading(PersistenceManager.java:235) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.instance(ThreadToStatementContextBridge.java:55) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.core.RelationshipProxy.getProperty(RelationshipProxy.java:182) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.springframework.data.neo4j.support.typerepresentation.AbstractIndexBasedTypeRepresentationStrategy.readAliasFrom(AbstractIndexBasedTypeRepresentationStrategy.java:126) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.TRSTypeAliasAccessor.readAliasFrom(TRSTypeAliasAccessor.java:36) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.TRSTypeAliasAccessor.readAliasFrom(TRSTypeAliasAccessor.java:26) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:102) ~[spring-data-commons-1.9.2.RELEASE.jar:na]
at org.springframework.data.convert.DefaultTypeMapper.getDefaultedTypeToBeUsed(DefaultTypeMapper.java:165) ~[spring-data-commons-1.9.2.RELEASE.jar:na]
at org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:142) ~[spring-data-commons-1.9.2.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.read(Neo4jEntityConverterImpl.java:78) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister$CachedConverter.read(Neo4jEntityPersister.java:170) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister.createEntityFromState(Neo4jEntityPersister.java:192) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.springframework.data.neo4j.support.Neo4jTemplate.createEntityFromState(Neo4jTemplate.java:224) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.springframework.data.neo4j.fieldaccess.GraphBackedEntityIterableWrapper.underlyingObjectToObject(GraphBackedEntityIterableWrapper.java:41) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.springframework.data.neo4j.fieldaccess.GraphBackedEntityIterableWrapper.underlyingObjectToObject(GraphBackedEntityIterableWrapper.java:27) ~[spring-data-neo4j-3.2.2.RELEASE.jar:na]
at org.neo4j.helpers.collection.IterableWrapper$MyIteratorWrapper.underlyingObjectToObject(IterableWrapper.java:57) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.helpers.collection.IteratorWrapper.next(IteratorWrapper.java:47) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.helpers.collection.IteratorUtil.addToCollection(IteratorUtil.java:382) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.helpers.collection.IteratorUtil.addToCollection(IteratorUtil.java:461) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.helpers.collection.IteratorUtil.asCollection(IteratorUtil.java:560) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at com.oberon.fm.domain.Movie.getRoles(Movie.java:80) ~[Movie.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_05]
at java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_05]
at javax.el.BeanELResolver.getValue(BeanELResolver.java:97) ~[el-api.jar:3.0.FR]
... 62 common frames omitted
16:35:02.870 [http-nio-8080-exec-11] DEBUG o.s.web.servlet.DispatcherServlet - Could not complete request
Aucun commentaire:
Enregistrer un commentaire