我想在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>
在我添加json Action之前,所有其他操作都运行良好。但是在我添加json Action之后,服务器无法执行错误代码503。
libs我在lib目录中添加了“jsonplugin-0.33.jar”。
答案 0 :(得分:16)
您没有在struts.xml包中定义JSON结果。如果你只需要默认的东西,那么你可以只扩展json-default而不是struts-default。如果您需要自定义包,那么请包含以下内容,这应该可以解决问题:
<result-types>
<result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/>
</result-types>
答案 1 :(得分: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>
答案 2 :(得分:0)
如果使用Maven,您可能需要添加依赖项,例如
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.2.3</version>
</dependency>
答案 3 :(得分:0)
以下是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"/>
请记住type="json"
响应中的变量getter和setter为操作中的getter提供了支持。
答案 4 :(得分:0)
在json-default
参数中包含extends
:
<package name="default" extends="struts-default,json-default">
<action>
...
...
</action>
</package>