浏览 6441 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-07-07
我在后台用Spring取得一个List,想在Tapestry页面上使用ognl表达式显示出来,但是总报错, ognl:NoSuchPropertyException,我取List得代码: public List getArticleList(); { return this .getHibernateTemplate(); .find( "from Article a,Author au where au.id=a.author.id and a.artArticle.id is null");; } 经过测试已经得到这个List了: Get list>>>>>>>>>>>>>> : [[Ljava.lang.Object;@1557c0, [Ljava.lang.Object;@1342a67, [Ljava.lang.Object;@1cbda0a, [Ljava.lang.Object;@57ea52, [Ljava.lang.Object;@1d8d39f, [Ljava.lang.Object;@2d95b3, [Ljava.lang.Object;@bf5555] 在Main.java tapestry代码中: public void pageBeginRender(PageEvent arg0); { // TODO Auto-generated method stub List list=this.getArticleDao();.getArticleList();; this.setArticles(list);; } 页面上: <span jwcid="@Foreach" source="ognl:articles" value="ognl:currentVar"> <TR> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articleTitle">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[1].authorName">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articleViewTime">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articlePostTime">test</span></TD> </TR> </span> 应该是页面上取得数据时候出的错误 完整Exception: An exception has occurred. You may continue by restarting the session. org.apache.tapestry.BindingException Unable to update expression 'currentVar' for lyo.test.tapestry.Main$Enhance_5@26efd3[main] to [Ljava.lang.Object;@4b35ef. binding: ExpressionBinding[main currentVar] location: context:/test/main.html, line 20 ognl.NoSuchPropertyException currentVar target: lyo.test.tapestry.Main$Enhance_5@26efd3[main] Stack Trace: ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:133); ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1459); ognl.ASTProperty.setValueBody(ASTProperty.java:105); ognl.SimpleNode.setValue(SimpleNode.java:239); ognl.Ognl.setValue(Ognl.java:478); org.apache.tapestry.binding.ExpressionBinding.setObject(ExpressionBinding.java:553); org.apache.tapestry.components.Foreach.renderComponent(Foreach.java:114); org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857); org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118); org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857); org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300); org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:371); org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732); org.apache.tapestry.engine.DirectService.service(DirectService.java:174); org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:872); org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197); org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:326); javax.servlet.http.HttpServlet.service(HttpServlet.java:709); javax.servlet.http.HttpServlet.service(HttpServlet.java:802); org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237); org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157); org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214); org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104); org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520); org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198); org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152); org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104); org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520); org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137); org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104); org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118); org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102); org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520); org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109); org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104); org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520); org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929); org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160); org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799); org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705); org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577); org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683); java.lang.Thread.run(Thread.java:534); 应该怎样取呢请指点! 多谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-07-07
引用 <span jwcid="@Foreach" source="ognl:articles" value="ognl:currentVar"> <TR> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articleTitle">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[1].authorName">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articleViewTime">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articlePostTime">test</span></TD> </TR> </span> 你要添加一个属性,好像是什么index的,具体可以看tapestry的foreach的文档,将上面的[0]换成index值。 告诉你没有currentVal熟悉是你没有在.page里加入currentVal的属性申明 |
|
返回顶楼 | |
发表时间:2005-07-08
dohkoos 写道 引用 <span jwcid="@Foreach" source="ognl:articles" value="ognl:currentVar"> <TR> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articleTitle">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[1].authorName">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articleViewTime">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar[0].articlePostTime">test</span></TD> </TR> </span> 你要添加一个属性,好像是什么index的,具体可以看tapestry的foreach的文档,将上面的[0]换成index值。 告诉你没有currentVal熟悉是你没有在.page里加入currentVal的属性申明 应该这么写,tapestry的例子很多,你要先熟悉一些例子。 <span jwcid="@Foreach" source="ognl:articles" value="ognl:currentVar"> <TR> <TD><span jwcid="@Insert" value="ognl:currentVar.articleTitle">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar.authorName">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar.articleViewTime">test</span></TD> <TD><span jwcid="@Insert" value="ognl:currentVar.articlePostTime">test</span></TD> </TR> </span> |
|
返回顶楼 | |
发表时间:2005-07-08
说错了,应该是像rwx写的那样
|
|
返回顶楼 | |
发表时间:2005-07-08
*.page也帖一下.
楼上的看一下他的HQL了. |
|
返回顶楼 | |
发表时间:2005-07-08
不是,应该把currentVar在page里声明为Article[]类型.
|
|
返回顶楼 | |
发表时间:2005-07-10
你的这个语句
"from Article a,Author au where au.id=a.author.id and a.artArticle.id is null" 取出来的是个数组,里边包含选出来的article和author, Iterator iter = list.iterator(); while(iter.hasNext()){ Object[] results = (Object[])iter.next(); Article article = results[0]; Author author = results[1]; } 所以你的list中的元素是个数组,所以应该确认一下是否将currentVar声称为Object的数组。 |
|
返回顶楼 | |
发表时间:2005-07-12
既然不是循环
我觉得你直接写get几个方法好了 变通一下 |
|
返回顶楼 | |