невозможно установить тип результата Struts2 для json - PullRequest
7 голосов
/ 27 мая 2009

Я хочу использовать json со Struts2. Однако, когда я установил тип возвращаемого действия в «json», я понял, что «тип результата не определен для типа« json », сопоставленного с именем« success »». Ниже приводится файл struts.xml.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.custom.i18n.resources" value="resource"/>

    <package extends="struts-default" name="test">
        <action name="inputHandler" class="inputHandlerAction">
            <result name="input">/index.jsp</result>
            <result>/result.jsp</result>
        </action>
        <action name="setLangHandler" class="com.sesoft.test.setLanguageHandler">
            <result>/index.jsp</result>
        </action>

        <action name="Handler" class="com.sesoft.test.Handler">
            <result>/test2.jsp</result>
        </action>   
    </package>

    <package name="example" extends="json-default">

        <action name="ajaxHandler" class="com.sesoft.test.AjaxHandler">
            <result name="success" type="json" />
        </action>

    </package>
</struts>

До того, как я добавил действие json, все остальные действия выполняются нормально. Но после добавления действия json серверу не удалось выполнить действие с кодом ошибки 503.

libs Я добавил "jsonplugin-0.33.jar" в каталог lib.

Ответы [ 5 ]

16 голосов
/ 28 мая 2009

У вас нет результата JSON, определенного в вашем пакете struts.xml. Если вам нужны только вещи по умолчанию, вы можете просто расширить json-default вместо struts-default. Если вам нужно настроить пакет, включите следующее, и это должно помочь:

    <result-types>
        <result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/>
    </result-types>
11 голосов
/ 18 октября 2011

ваш пакет должен расширять json-default

<package name="json-default" extends="struts-default">
    <result-types>
        <result-type name="json" class="org.apache.struts2.json.JSONResult"/>
    </result-types>
    <interceptors>
        <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/>
    </interceptors>
</package>
0 голосов
/ 09 мая 2019

Включить json-default в параметр extends:

<package name="default" extends="struts-default,json-default">
   <action> 
       ...
       ...
  </action>
</package>
0 голосов
/ 27 апреля 2013

Вот моя конфигурация в pom.xml:

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.1.2</version>
</dependency>

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

В результате действия вам нужно только указать type="json":

<result type="json"/>

Помните, что переменные getter и setter в ответе type="json" дают getter в действии.

0 голосов
/ 15 июня 2011

Если вы используете Maven, вам может потребоваться добавить зависимость, например,


        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-json-plugin</artifactId>
            <version>2.2.3</version>
        </dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...