2009-05-27 13 views
7

Quiero usar json con Struts2. Sin embargo, cuando configuro la acción, regreso type a "json", obtengo "no hay ningún tipo de resultado definido para el tipo 'json' mapeado con el nombre 'success'." Bellow es el archivo struts.xml.no se puede establecer el tipo de resultado Struts2 a json

<?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> 

Antes de agregar la acción json, todas las demás acciones funcionan bien. Pero después de que agregué la acción json, el servidor no actuó con el código de error 503.

libs He agregado "jsonplugin-0.33.jar" al directorio lib.

Respuesta

15

No tiene el resultado JSON definido en su paquete struts.xml. Si solo necesitas elementos predeterminados, puedes extender json-default en lugar de struts-default. Si necesita personalizar el paquete de continuación incluyen los siguientes y que debe hacer el truco:

<result-types> 
     <result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/> 
    </result-types> 
+2

Parece que el complemento de Google para json ha sido reemplazado por Struts2 Json Plugin: https://cwiki.apache.org/S2PLUGINS/json-plugin.html 'El complemento JSON se incluye con Struts desde 2.1.7+. El complemento en Google Code ha sido desaprobado. –

0

Si se utiliza Maven puede que tenga que agregar la dependencia, por ejemplo,


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

que el paquete debe extiende 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

En realidad, te amo. Me acabas de salvar después de horas y horas de dolor y sufrimiento. Gracias por escribir esto hace 6 años, así que en 2017 mi vida sería un poco menos horrible. – nospamthanks

0

Aquí está mi configuración en 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> 

En el resultado de la acción sólo tiene que especificar type="json":

<result type="json"/> 

Recuerde que el captador de variables y el setter en type="json" dan respuesta a los captadores en la acción.

Cuestiones relacionadas