2014-12-02 2 views
0

Я пытаюсь узнать о struts2-jQuery-plugin, а точнее struts2-jQuery-grid-plugin. На данный момент я реплицировал учебник, предоставленный разработчиками HERE. Мне удалось отобразить внутри сетки такой простой класс, как Customer (в их примере), который я могу скрыть от указанной сетки в пределах JSP и работает прекрасно:Struts 2 доступ к свойствам класса с помощью JQuery Grid

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

} 

So Как мне получить доступ к свойствам/полям внутри Клиента, который также находится в Резервации? Исходя из Struts2 и использования <s:property /> тегов перед использованием этого плагина Jquery, я пытался сделать так, как это, так как сетка внутри JSP получает JSON, содержащий все данные:

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

Но это не работает поскольку мои столбцы сетки показывают пусто.

Также можно ли применить любое выражение OGNL к отображаемым полям? Предположим, что я хочу загладить содержимое столбца, прежде чем я начну использовать jQuery Grid, я смог бы управлять этим, применив .toUpperCase() к свойствам, которые я отобразил, но теперь, используя этот плагин, я немного потерян.

UPDATE

Я был в состоянии подтвердить, что это возможно, чтобы получить доступ к «сложному» объекту, используя обозначение I отображаемое (протестирован с другим «сложным» классом). Поэтому я думаю, что моя проблема лежит внутри поколения JSON моего конкретного класса (тот, который я не записывал, поэтому я не делаю вопрос более сложным) ... Я попытаюсь взглянуть внутрь сгенерированного JSON в сетку и сообщить вам, что там происходит.

SOLVED: Обнаружен нулевой указатель внутри поколения JSON, поэтому я его исправил. Проблема здесь. Принятый ответ отправляется @Andrea, когда он указал, как получить доступ к внутренним объектам объекта, что было моим первоначальным вопросом (хотя я делал это правильно, но не смог из-за проблемы с nullpointer).

ответ

0

Как мне получить доступ к свойствам/полям внутри Клиента, который также находится внутри резервирования?

Точно так же, как вы это делаете. Если это не работает, вы делаете что-то неправильно.

Попробуйте изменить index к основному объекту, BTW:

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

И обеспечить вас есть List<Reservation>, и что все ваши объекты (предварительный заказ, клиент, автомобили и т.д. ...) have a no-args constructor (или неявный или объявлено), и что каждый геттер и сеттер правильно объявлены.

+0

Спасибо за ваш ответ @Andrea. Сначала я обеспечил, что у меня был список внутри моей gridModel, когда действие выполняется, и все геттеры и сеттеры размещены. Я также пытался изменить индекс, но он тоже не работал. Также проверено, что я не забыл о пустом конструкторе, ни о каких-либо геттерах или сеттерах ... Это странно, потому что Im-тестирование в рамках одного и того же действия с двумя случаями, сначала используя только «простой» класс, и когда я его вижу, он корректно отображает все данные , Я пытаюсь переключиться на «сложный» класс, но он ничего не показывает .. :( – JorgeGRC

+0

Возможно, есть некоторая ошибка при создании JSON для сетки, и я не замечаю этого, и это объясняет, почему это ничего не показывает В прошлом у меня возникли некоторые проблемы с разбором нулевых значений с помощью JSON ('Vehicle'in' Reservation'could null). – JorgeGRC

+0

'a Список внутри моей gridModel': | список должен быть самой моделью, а не находиться внутри нее –

Смежные вопросы