我试图了解struts2-jQuery-plugin
,更具体地说是struts2-jQuery-grid-plugin
。目前我已经复制了开发人员提供的教程HERE.我已经成功地在网格内部显示了一个简单的类Customer
(在他们的示例中),我可以从JSP
中提到的网格中引用就好了,并且工作得很好:
<sjg:grid
id="gridtable"
caption="Customer Examples"
dataType="json"
href="%{remoteurl}"
pager="true"
gridModel="gridModel"
rowList="10,15,20"
rowNum="15"
rownumbers="true">
<sjg:gridColumn name="id" index="id" title="ID" formatter="integer" sortable="false"/>
<sjg:gridColumn name="name" index="name" title="Name" sortable="true"/>
<sjg:gridColumn name="country" index="country" title="Country" sortable="false"/>
<sjg:gridColumn name="city" index="city" title="City" sortable="false"/>
<sjg:gridColumn name="creditLimit" index="creditLimit" title="Credit Limit" formatter="currency" sortable="false"/>
</sjg:grid>
但是,每当我尝试使用这个简单的Customer
课程而不是我自己的课程时,情况开始变得复杂,例如让我们说课程Reservation
(我发布了一些例子)因为我不想用我自己的项目代码使问题复杂化):
public class Reservation {
private Customer customer;
private Car vehicle;
public setCustomer(Customer customer){
this.customer = customer;
}
public setCar(Car vehicle){
this.vehicle = vehicle;
}
}
所以我现在如何访问Customer内的属性/字段,这也属于预订?来自Struts2并在使用此jQuery插件之前使用<s:property />
标签,我&#39;我一直试图这样做,因为JSP
内的网格收到一个包含所有数据的JSON:
<sjg:gridColumn name="customer.city" index="city" title="City" sortable="false"/>
但由于我的网格列显示为空,它无效。
同样是否可以将任何OGNL表达应用于显示的字段?我想说我想要大写列的内容,在开始使用jQuery Grid之前,我可以管理这是通过将.toUpperCase()
应用于我显示的属性,但现在使用此插件我有点迷失。
更新
我已经确认可以访问&#34;复合体&#34;使用我显示的符号的对象(使用其他&#34;复杂&#34;类测试)。所以我认为我的问题出现在我特定班级的JSON一代(我没有写下来,所以我不会让问题变得更复杂)......我会尝试一个查看传递给Grid的生成的JSON,让你知道那里发生了什么。
已解决:在JSON生成中找到一个nullpointer,所以我修复了它。问题就在那里。接受的答案是@Andrea,因为他指出如何访问对象的内部对象,这是我最初的问题(虽然我正确地做了但由于nullpointer问题而失败了)。
答案 0 :(得分:0)
如何现在访问Customer内的属性/字段,这也在预订中?
正是你的行为方式。如果它不起作用,你做错了。
尝试将index
更改为主要对象,顺便说一下:
<sjg:gridColumn name="customer.city" index="customer" title="City" sortable="false"/>
并确保您拥有List<Reservation>
,以及所有对象(预订,客户,汽车等......)have a no-args constructor(隐式或声明),以及每个获取者和设置者都是正确宣布。