2014-08-30 3 views
1

Я использую struts 2 компонент jquery plugin select.Struts 2 jquery sj: select and json result

Действие:

SampleAction { 

     private List<SampleVO> samples; //With setters and getters 
     private List<AnotherVO> anotherList; //With setters and getters 
     private String anString; //With setters and getters 

     @Action(value = "/loadSelect", results = { 
     @Result(name = "success", type = "json")}) 
      public String loadSomeSamples() { 
       samples = new ArrayList<SampleVO>(); 
       //Put some object in samples. 
       return SUCCESS; 
       } 
    } 

СПЯ является

<sj:select list="samples" /> 

Проблема заключается в том, что плагин будет JSON сериализации все свойства в действии (anotherList, anString и т.д ...), а ниже

{ 
    "samples": { 
    "0": {"property":"a"}, 
    "1": {"property":"b"}, 
    "2": {"property":"c"} 
    }, 
    "anString": "hello", 
    "anotherList": { 
    "0": {"prop1":"a","prop2":"b"}, 
    "1": {"prop1":"c","prop2":"d"} 
    } 
} 

Если изменить JSON root ра rameter to samples, то js:select не будет работать, поскольку он не может найти список с именем samples в возвращенном json. Возвращенный json:

{ 
    "0": {"property":"a"}, 
    "1": {"property":"b"}, 
    "2": {"property":"c"} 
} 

Можно ли это исправить?! Есть ли способ, что я могу настроить Struts 2 JSon плагин для создания

{ 
    "samples": { 
     "0": {"property":"a"}, 
     "1": {"property":"b"}, 
     "2": {"property":"c"} 
     } 
    } 

Или есть почему распорки 2 JQuery плагин в принять простой JSon массив

ответ

1

Вы можете использовать includeProperties параметр результата JSon. Например

@Result(type="json", params = {"includeProperties", "samples.*" }) 

еще один образец

@Result(type="json", params = {"root", "samples", "wrapPrefix", "{\"samples\":", "wrapSuffix", "}"}) 
+0

Второй работает, но первый не. Первый возвращает пустой. однако '' includeProperties "," samples. *, samples [\\ d +]. * "}' работает. Я буду отмечать это как правильно, но можете ли вы предложить и первый подход?! –

+0

Это регулярное выражение для совпадения имен, начинающихся с 'samples'. –

+0

Вы правы! Это похоже на регулярное выражение vaid, но я не знаю, почему мы должны объявлять 'samples [\\ d +]. *' Тоже :(Я обновлю, если найду что-нибудь –