无法将Struts2结果类型设置为json

Sef*_*ler 7 json struts2

我想在Struts2中使用json.但是,当我将动作返回类型设置为"json"时,我得到"没有为类型'json'定义的结果类型,其名称为'success'." Bellow是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>
Run Code Online (Sandbox Code Playgroud)

在我添加json Action之前,所有其他操作都运行良好.但是在我添加json Action之后,服务器无法执行错误代码503.

libs我已将"jsonplugin-0.33.jar"添加到lib目录中.

Pet*_*ley 16

您没有在struts.xml包中定义JSON结果.如果你只需要默认的东西,那么你可以只扩展json-default而不是struts-default.如果您需要自定义包,那么请包含以下内容,这应该可以解决问题:

    <result-types>
        <result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/>
    </result-types>
Run Code Online (Sandbox Code Playgroud)

  • 似乎json的Google插件已被Struts2 Json插件取代:https://cwiki.apache.org/S2PLUGINS/json-plugin.html`自2.1.7+以来,JSON插件与Struts捆绑在一起.谷歌代码插件已被弃用 (2认同)

小智 11

你的包应该扩展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>
Run Code Online (Sandbox Code Playgroud)