2009-05-27 14 views
7

我想在Struts2中使用json。但是,當我將action返回類型設置爲「json」時,我得到「沒有爲名爲'success'的類型'json'定義結果類型。」 Bellow是struts.xml文件。無法將Struts2結果類型設置爲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> 

在添加json Action之前,所有其他操作都可以正常工作。但是在我添加了json Action後,服務器無法執行錯誤代碼503。

libs我已將「jsonplugin-0.33.jar」添加到lib目錄中。

回答

15

您沒有在struts.xml包中定義的JSON結果。如果你只需要默認的東西,那麼你可以擴展json-default而不是struts-default。如果您需要定製包,那麼包括以下內容和應該做的伎倆:

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

似乎用於json的Google插件已被替換爲Struts2 Json插件:https://cwiki.apache.org/S2PLUGINS/json-plugin.html JSON插件自2.1.7+開始與Struts捆綁在一起。 Google代碼中的插件已被棄用。「# – 2012-02-06 15:24:50

0

如果使用Maven,你可能需要添加依賴例如


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

你包應該擴展JSON默認

<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

我真的愛你。經過數小時和數小時的痛苦和痛苦,你纔剛剛救了我。感謝你在6年前寫這篇文章,所以在2017年我的生活會不會很糟糕。 – nospamthanks 2017-09-22 15:44:45

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。

相關問題