【问题标题】:Struts 2 accessing class properties with JQuery GridStruts 2 使用 JQuery Grid 访问类属性
【发布时间】:2014-12-02 14:52:40
【问题描述】:

我正在尝试了解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 内部的属性/字段,这也在 Reservation 内部? 来自 Struts2 并在使用这个 jQuery 插件之前使用 &lt;s:property /&gt; 标签,我一直在尝试这样做,因为JSP 内的网格接收到一个包含所有数据的 JSON:

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

但它不起作用,因为我的网格列显示为空..

另外是否可以对显示的字段应用任何 OGNL 表达式?假设我想将列的内容大写,在我开始使用 jQuery Grid 之前,我可以通过应用 @ 来管理它987654333@ 到我显示的属性,但现在使用这个插件我有点迷路了。

更新

我已经能够确认可以使用我显示的符号访问“复杂”对象(使用其他“复杂”类进行测试)。所以我认为我的问题出在我的特定类的 JSON 生成中(我没有写下来,所以我不会让问题变得更复杂)......我会尝试看看生成的 JSON 传递到网格,让你知道那里发生了什么。

已解决: 在 JSON 生成中发现了一个空指针,所以我修复了它。问题就在那里。接受的答案是@Andrea,因为他指出了如何访问对象的内部对象,这是我最初的问题(尽管我做得正确但由于空指针问题而失败)。

【问题讨论】:

    标签: jquery jsp struts2 jqgrid ognl


    【解决方案1】:

    我现在如何访问 Customer 中的属性/字段,它们也在 Reservation 中?

    正是你正在做的方式。如果它不起作用,则说明您做错了。

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

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

    并确保您有一个List&lt;Reservation&gt;,并确保您的所有对象(预订、客户、汽车等...)have a no-args constructor(无论是隐式的还是声明的),并且每个 getter 和 setter 都正确声明。

    【讨论】:

    • 感谢您的回复@Andrea。首先,我确保在执行操作时我的 gridModel 中有一个 List,并且所有的 getter 和 setter 都已放置。我也尝试更改索引,但也没有用。还检查了我没有忘记空构造函数,也没有忘记任何 getter 或 setter ......这很奇怪,因为我在两个案例的相同操作中进行测试,首先只使用“简单”类,当我看到它正确显示所有数据时,我尝试切换到“复杂”类,但它什么也没显示.. :(
    • 可能在为网格生成 JSON 时出现了一些错误,而我没有注意到它,这可以解释为什么它没有显示任何内容。过去,我在使用 JSON 解析空值时遇到了一些问题(Vehiclein Reservation可能为空)。
    • a List&lt;Reservation&gt; inside my gridModel :|列表必须是模型本身,而不是在其中
    • XD 是的,对不起我生疏的英语,在我的行动中,我有一个 List&lt;Reservation&gt; gridModel :P。再次道歉:)
    • 你能告诉我一些关于我的第二个小问题吗?我想知道是否可以将 OGNL 应用于网格内的任何数据行,例如大写字段,还是我必须在操作中更早地操作数据?。
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多