Struts 2使用JQuery Grid访问类属性

时间:2014-12-02 14:52:40

标签: jquery jsp struts2 jqgrid ognl

我试图了解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问题而失败了)。

1 个答案:

答案 0 :(得分:0)

  

如何现在访问Customer内的属性/字段,这也在预订中?

正是你的行为方式。如果它不起作用,你做错了。

尝试将index更改为主要对象,顺便说一下:

<sjg:gridColumn name="customer.city" index="customer" title="City" sortable="false"/>

并确保您拥有List<Reservation>,以及所有对象(预订,客户,汽车等......)have a no-args constructor(隐式或声明),以及每个获取者和设置者都是正确宣布。