2016-06-13 61 views
0

我想从我的struts action类中返回一个大的JSON响应。 我在eclipse中制作了一个动态web项目,而不使用任何其他工具的maven。如何从struts 2中的action中返回JSON

所以我需要为此做些什么。

+2

请说明您的具体问题或添加额外的细节,突显正是你需要的。正如目前所写,很难确切地说出你在问什么。请参阅如何问问页面以获取帮助以澄清此问题。 –

回答

0

按照以下步骤

步骤1的pom.xml

<!-- Struts 2 --> 
<dependency> 
     <groupId>org.apache.struts</groupId> 
    <artifactId>struts2-core</artifactId> 
    <version>2.1.8</version> 
</dependency> 

<!-- Struts 2 JSON Plugins --> 
<dependency> 
     <groupId>org.apache.struts</groupId> 
    <artifactId>struts2-json-plugin</artifactId> 
    <version>2.1.8</version> 
</dependency> 

如果你不使用Maven,你可以手动添加罐子和在你的WEB-INF/lib文件夹复制它们。

第二步:制定行动

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import com.opensymphony.xwork2.Action; 

public class JSONDataAction{ 

private String string1 = "A"; 
private String[] stringarray1 = {"A1","B1"}; 
private int number1 = 123456789; 
private int[] numberarray1 = {1,2,3,4,5,6,7,8,9}; 
private List<String> lists = new ArrayList<String>(); 
private Map<String, String> maps = new HashMap<String, String>(); 

//no getter method, will not include in the JSON 
private String string2 = "B"; 

public JSONDataAction(){ 
    lists.add("list1"); 
    lists.add("list2"); 
    lists.add("list3"); 
    lists.add("list4"); 
    lists.add("list5"); 

    maps.put("key1", "value1"); 
    maps.put("key2", "value2"); 
    maps.put("key3", "value3"); 
    maps.put("key4", "value4"); 
    maps.put("key5", "value5"); 
} 

public String execute() { 
      return Action.SUCCESS; 
    } 

public String getString1() { 
    return string1; 
} 

public void setString1(String string1) { 
    this.string1 = string1; 
} 

public String[] getStringarray1() { 
    return stringarray1; 
} 

public void setStringarray1(String[] stringarray1) { 
    this.stringarray1 = stringarray1; 
} 

public int getNumber1() { 
    return number1; 
} 

public void setNumber1(int number1) { 
    this.number1 = number1; 
} 

public int[] getNumberarray1() { 
    return numberarray1; 
} 

public void setNumberarray1(int[] numberarray1) { 
    this.numberarray1 = numberarray1; 
} 

public List<String> getLists() { 
    return lists; 
} 

public void setLists(List<String> lists) { 
    this.lists = lists; 
} 

public Map<String, String> getMaps() { 
    return maps; 
} 

public void setMaps(Map<String, String> maps) { 
    this.maps = maps; 
} 

} 

步骤3在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.devMode" value="true" /> 

<package name="default" namespace="/" extends="json-default"> 
    <action name="getJSONResult" 
     class="com.mkyong.common.action.JSONDataAction"> 
     <result type="json" /> 
    </action> 
</package> 

</struts> 

运行该项目,并输出将是http://localhost:8080/Struts2Example/getJSONResult.action

output

{ 
"lists":["list1","list2","list3","list4","list5"], 
"maps": 
{ 
    "key4":"value4","key3":"value3","key5":"value5","key2":"value2","key1":"value1" 
}, 
"number1":123456789, 
"numberarray1":[1,2,3,4,5,6,7,8,9], 
"string1":"A", 
"stringarray1":["A1","B1"] 
} 

只要确保在你的struts.xml您的工作空间延伸JSON工作区

<package name="default" namespace="/" extends="json-default">