2014-12-02 59 views
0

我正試圖瞭解struts2-jQuery-plugin,更具體地說是struts2-jQuery-grid-plugin。現在我已經複製了開發人員提供的教程HERE.我已經成功地在網格內顯示了一個簡單的類,例如Customer(在他們的示例中),我可以從JSP中提到的網格中很好地參考,完美的罰款:使用JQuery Grid訪問類屬性的Struts 2

<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; 
} 

} 

所以我如何訪問客戶內部的屬性/字段,這也屬於保留內部?從Struts2的產品和使用<s:property />標籤使用此jQuery插件之前,我一直在嘗試這樣做是這樣,作爲JSP內部電網接收包含所有數據的JSON:

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

但它不工作因爲我的網格列顯示爲空。

還有是否可以將任何OGNL表達式應用於顯示的字段?假設我想在開始使用jQuery Grid之前將大寫字母的內容大寫,我可以通過將.toUpperCase()應用於我顯示的屬性來管理此內容,但現在使用此插件我有點迷路了。

UPDATE

我已經能夠證實,它可能利用我所顯示的符號訪問「複雜」的對象(與其他「複雜」類測試)。所以我認爲我的問題存在於我的特定類的JSON一代(我沒有寫下來,所以我不會讓問題更復雜)......我會嘗試看看生成的JSON傳遞到網格並讓你知道發生了什麼。

已解決:在JSON代中發現了一個空指針,所以我就修正了它。問題出現在那裏。 @Andrea指出如何訪問一個對象的內部對象,這是我的第一個問題(雖然我正確地做了,但由於空指針問題失敗),所以我接受了答案。

回答

0

我該如何訪問Customer中的屬性/字段,它也在Reservation中?

確實如此。如果它不起作用,你做錯了什麼。

嘗試改變index的主要對象,順便說一句:

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

,並確保你有一個List<Reservation>,並且所有對象(預約,客戶,租車等...)have a no-args constructor(隱式或聲明),並且每個getter和setter都被正確聲明。

+0

感謝您的回覆@Andrea。 首先,我確保在執行動作時我的GridModel中有一個List ,並且放置所有getter和setter。 我也嘗試改變索引,但它也沒有工作。也檢查了我沒有忘記空的構造函數,也沒有任何getters或setter ...這很奇怪,因爲我在兩個case的同一個動作中進行測試,首先使用「簡單」類,當我看到它正確顯示所有數據,我嘗試切換到「複雜」類,但它沒有顯示任何東西.. :( – JorgeGRC 2014-12-02 15:47:16

+0

也許有一些錯誤,而爲網格生成JSON,我沒有注意到它,這將解釋爲什麼它不顯示任何東西。過去,我用JSON解析了一些空值的問題('''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''') – JorgeGRC 2014-12-02 15:51:30

+0

'my List 我的gridModel':|列表必須是模型本身, – 2014-12-02 15:52:47