Вопрос:

Struts 2 jquery sj: выберите и json результат

java json jsp struts2 struts2-jquery

668 просмотра

1 ответ

24772 Репутация автора

Я использую Struts 2 JQuery плагин выбора компонента.

Действие это:

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

JSP является

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

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

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

Это можно исправить ?! Есть ли способ настроить плагин JSON для Struts 2 для генерации

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

Или есть какой-либо, почему Struts 2 JQuery плагин принять простой массив JSON

Автор: Alireza Fattahi Источник Размещён: 30.08.2014 07:46

Ответы (1)


1 плюс

45112 Репутация автора

Решение

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

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

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

@Result(type="json", params = {"root", "samples", "wrapPrefix", "{\"samples\":", "wrapSuffix", "}"})
Автор: Roman C Размещён: 30.08.2014 11:30
Вопросы из категории :
32x32