DisplayTag错误

时间:2010-02-16 22:46:14

标签: java jsp displaytag

我正在使用带分页的DisplayTag来显示List对象。 Transactions有一个名为'company'/ getCompany()的属性,它是Company对象。 Company对象包含一个名为'name'/ getName()的字符串。

我的代码如下所示:

<display:table name="${transactions}" id="transaction" pagesize="2" defaultsort="1">  

<display:column property="id" title="ID" href="showTransactionDetails.html" paramId="id" />
<display:column property="company.name" title="Company Name" sortable="true"    >
<display:column property="status" title="Status" sortable="true">

</display:table>

这是一个奇怪的部分....当第一页显示时,一切都很好,总共有11页,每页包含2条记录。

我可以点击页码并查看页面前进。但由于一些奇怪的原因,当我点击第(2-4)页时,我得到一个例外:

  

org.apache.jasper.JasperException:   javax.servlet.ServletException:   javax.servlet.jsp.JspException:   例外:[。LookupUtil]查找错误   对象中的属性“company.name”   类型   “com.replacements.entity.Transaction”。   原因:null

(同样重要的是要注意,所有的Transaction记录都包含company.name的值,因为它是我的DB中的必填字段)

8 个答案:

答案 0 :(得分:2)

该公司是否可能为空。也就是说,您在数据库中没有公司的交易。

答案 1 :(得分:2)

我通过将Hibernate映射中的company属性更改为“lazy = false”

来解决它

我仍然不确定为什么分页在某些页面上起作用而不是全部。但这解决了它。

谢谢大家的意见。

答案 2 :(得分:1)

正如@Vincent所说,可能company为空。您的数据库中可能有值,但可能存在Transaction类未正确读取db值并设置其company成员的问题。您是否尝试过设置断点并查看Transaction实例?

答案 3 :(得分:1)

我的第一个猜测是有一个空的公司名单。我建议你打印转储输出你的交易结果,然后才能到达显示部分。

如果这不是问题,我看到了由特殊字符引起的显示问题。其中一个公司名称可能包含控制字符或其他一些不可显示的字符。

答案 4 :(得分:1)

尝试将name="${transactions}"代码中的display:table更改为name="transactions"

假设您在会话或请求中拥有transactions集合或其他任何内容。

答案 5 :(得分:0)

异常消息字面上告诉Transactionnull。因此,null后面的交易列表中显然有一个${transactions}项。看起来像是事务列表的加载/填充逻辑中的错误。也许最后一项是null?或者列表是请求作用域,并且依赖于后续请求中缺少的某些请求参数,以便加载/填充列表失败?

对于感兴趣的人,如果某些人认为Company为空,那么EL就不会有错误。它会提到对象类型Company

答案 6 :(得分:0)

一个requestURI标签......就像这样...... requestURI =“

答案 7 :(得分:0)

确保您的类中包含所有属性的setter和getters方法以及匹配属性名称的名称。