2009-05-27 27 views
7

Tôi muốn sử dụng json với Struts2. Tuy nhiên, khi tôi đặt kiểu trả về hành động là "json", tôi nhận được "không có loại kết quả nào được định nghĩa cho loại 'json' được ánh xạ với tên 'thành công'." Dưới đây là tệp struts.xml.không thể đặt loại kết quả Struts2 thành 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> 

Trước khi tôi thêm hành động json, mọi hành động khác đều hoạt động tốt. Nhưng sau khi tôi thêm hành động json, máy chủ không hoạt động với mã lỗi 503.

libs Tôi đã thêm "jsonplugin-0.33.jar" vào thư mục lib.

Trả lời

15

Bạn chưa xác định kết quả JSON trong gói struts.xml của mình. Nếu bạn chỉ cần những thứ mặc định thì bạn chỉ có thể mở rộng json-default thay vì struts-default. Nếu bạn cần tùy chỉnh gói, sau đó bao gồm các thông tin sau và điều đó cần thực hiện thủ thuật:

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

Dường như Plugin Google cho json đã được thay thế bằng Plugin Juts Struts2: https://cwiki.apache.org/S2PLUGINS/json-plugin.html 'Plugin JSON được đóng gói với Struts kể từ 2.1.7+. Plugin tại Google Code đã không được chấp nhận.' –

0

Nếu sử dụng Maven, bạn có thể cần thêm phụ thuộc, ví dụ:


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

bạn gói nên kéo dài json-mặc định

<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

Tôi thực sự yêu bạn. Bạn vừa cứu tôi sau nhiều giờ và đau đớn. Cảm ơn bạn đã viết điều này 6 năm trước vì vậy mà trong năm 2017 cuộc sống của tôi sẽ là một chút ít khủng khiếp. – nospamthanks

0

Dưới đây là cấu hình của tôi trong 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> 

Trong kết quả hành động mà bạn chỉ cần xác định type="json":

<result type="json"/> 

Hãy nhớ biến getter và setter trong câu trả lời type="json" cung cấp cho getters trong hành động.

Các vấn đề liên quan