Struts 2 JSON аннотация - PullRequest
       5

Struts 2 JSON аннотация

1 голос
/ 23 ноября 2010

Я давно хотел создать распорки 2 с типом возврата json, используя конфигурацию аннотации.Я успешно создал это, используя конфигурацию типа xml, как этот фрагмент:

<action name="FetchJSON" class="com.stikiflem.Json" method="getJSON">
        <result type="json"/>
</action>

Я разместил рабочую демонстрацию использования конфигурации типа xml здесь http://stikiflem.wordpress.com/2008/08/27/struts-2-json-sample/

Но как мне это сделать?преобразовать это в аннотацию?Вот мой пример класса:

public class JsonAction extends ActionSupport{

private List sampleList;

public String execute() {

    sampleList = new ArrayList();

    sampleList.add("stikiflem sample 1");
    sampleList.add("stikiflem sample 2");
    sampleList.add("stikiflem sample 3");
    sampleList.add("stikiflem sample 4");

    System.out.println("----------------------------------------------");
    System.out.println("----------------------------------------------");
    System.out.println("-sample111List:" + sampleList.toString());
    System.out.println("----------------------------------------------");
    System.out.println("----------------------------------------------");

    return SUCCESS;
}


@Action(value="FetchJSON", results = {
     @Result(name="success", type="json")
 })  

public String getJSON(){
 System.out.println("get jason ko");
 return execute();
}

public List getSampleList() {
    return sampleList;
}

public void setSampleList(List sampleList) {
    this.sampleList = sampleList;
}



}

Пробовал вызывать его с помощью "json.action", он, конечно, вызывает метод execute (), но не может возвращать тип json.Вызов «FetchJSON» ничего не делает.Этот вопрос звучит глупо, но в сети есть лишь небольшое количество уроков и пример подробной аннотации.Я читал книгу Мэннинга Struts 2 в книге действий, но она лишь слегка царапает поверхность, только типичный привет и успех, перенаправление ввода.

Я искал в сети максимум и минимум, и пока что не видел ни одного.Я знаю, что многие программисты тоже ищут это. Надеюсь, кто-нибудь сможет рассказать мне об этом.Я бился головой об этом уже несколько дней.(

Ответы [ 2 ]

4 голосов
/ 28 ноября 2010

Подобный вопрос был задан здесь: JSON-плагин Struts2 с аннотациями

Я заставил ваше действие сработать, прокомментировав его следующим образом:

@ParentPackage("json-default")
@Result(name="success", type="json")
public class JsonAction extends ActionSupport {
1 голос
/ 05 мая 2017

Получить зависимости JAR

   <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>2.3.20</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-json-plugin</artifactId>
    <version>2.3.20</version>
</dependency>

Плагин конвенции

Плагин конвенции входит в состав Struts начиная с версии 2.1 и заменяет плагин Codebehindи плагины Zero Config.Он предоставляет следующие функции:

Местоположение действия по соглашениям об именах пакетов

Местоположение результатов (JSP, FreeMarker и т. Д.) По соглашениям об именах

Имя класса для соглашения об именах URL

Имя пакета для соглашения о пространстве имен

Переопределение имени действия с использованием аннотаций

Переопределение пространства имен с использованием аннотаций

Переопределение пакета XWork с использованием аннотаций

Установить родительский пакет

Используя аннотацию, установите пакет в качестве json-default для поддержки JSON.

 @ParentPackage("json-default")

Установите тип результата

  @Result(name="success", type="json")

Определить фильтр в web.xml

Определить фильтр Struts 2 в web.xml и передать класс действия, определив actionPackages.

Класс действия

В этом классе данные преобразуются в формат JSON.

   @Result(name = "success", type = "json")
   @ParentPackage("json-default")
   public class StrutsJsonAnnotationAction extends ActionSupport {

private static final long serialVersionUID = 3516335522937177571L;
private String name = "Narendra Modi";
private String designation = "Prime Minister of India";
private String dob = "17 September 1950";
private String[] education = {"MA", "BA"};
private List<String> favBooks = new ArrayList<String>();
private Map<String, String> assumedOffice = new HashMap<String, String>();

public StrutsJsonAnnotationAction() {

    favBooks.add("Ramayan");
    favBooks.add("Geeta");

    assumedOffice.put("President", "Pranab Mukherjee");
    assumedOffice.put("Preceded by", "Manmohan Singh");
}

@org.apache.struts2.convention.annotation.Action("/india")
@Override
public String execute() {
    return SUCCESS;
}

Источник: http://www.websparrow.org/struts/struts2-and-json-integration-using-annotation-example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...