Struts2的如何返回一个JSON响应[复制](Struts2 How to Return a J

2019-08-08 19:47发布

这个问题已经在这里有一个答案:

  • 如何让只有特定的字段在Struts2反应 1个回答

我目前正在创建一个Web应用程序,其中用户可以从数据库中获取JSON标签,

这里是我的支柱作用

public String execute(){


    Gson gson = new Gson();
    String tagsAsJson = gson.toJson(audioTaggingService.findTagsByName(q));
    System.out.println(tagsAsJson);

    return "success";
}

更新:

tagsAsJson已经处于JSON格式的所有我想要的是只返回,而不是整个集体诉讼本身。

它返回这样的事情

这是我要返回给用户的数据

[{"id":2,"name":"Dubstep","description":"Dub wob wob"},{"id":3,"name":"BoysIIMen","description":"A 1990s Boy Band"},{"id":4,"name":"Sylenth1","description":"A VST Plugin for FLStudio "}]

如何返回tagsAsJson作为AR JSON esponse? 因为这JSON响应将被客户端侧的代码使用。

Answer 1:

使用Struts “JSON插件” 。

很简单,三个步骤:

只是它列入你这样的Maven项目

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-json-plugin</artifactId>
    <version>${version.struts2}</version>
</dependency>

声明你想返回的JSON字符串喜欢你的行动领域领域,提供了getter和setter。

public class Struts2Action extends ActionSupport {

    private String jsonString;

    public String execute() {
        Gson gson = new Gson();
        jsonString = gson.toJson(audioTaggingService.findTagsByName(q));

        return "success";
    }

    public String getJsonString() {
        return jsonString;
    }

    public void setJsonString(String jsonString) {
        this.jsonString = jsonString;
    }
}

最后,把这个在您的XML:

<action name="someJsonAction" class="com.something.Struts2Action">
    <result type="json">
        <param name="noCache">true</param>
        <param name="excludeNullProperties">true</param>
        <param name="root">jsonString</param>
    </result>
</action>

注意<param name="root">jsonString</param> 这段XML的告诉Struts2的这个确切的属性应该被视为JSON序列根。 因此,只有指定属性(及以下,如果它是一个地图或任何)将在JSON响应中返回。

多亏了JSON插件内容类型将是正确的。

“JSON插件”的文件是在这里: http://struts.apache.org/release/2.3.x/docs/json-plugin.html



Answer 2:

尝试使用响应的PrintWriter的。

Java的

    public String execute()
    {
      Gson gson                    = new Gson();
      String jsonString            = gson.toJson(audioTaggingService.findTagsByName(q));
      HttpServletResponse response = ServletActionContext.getResponse();

      response.setContentType("application/json");
      response.getWriter().write(jsonString );

      return null;
   }


Answer 3:

在Action类把下面的代码。

  public class Struts2Action extends ActionSupport
  {     

    public String jsonString="";

    public String execute()
    {
      Gson gson = new Gson();
      jsonString  = gson.toJson(audioTaggingService.findTagsByName(q));
      System.out.println(jsonString);

      return "success";
   }
  }

在JSP把下面的代码

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<title>Struts Rais</title>

<s:property value="jsonString"/><br />

如果你想操纵你的猫JSON数据VAR数据这将打印JSON数据<s:set>标签和整个页面访问变量。



Answer 4:

要返回一个JSON响应,你需要在你的项目构建路径Struts2JSON的-插件- 2.xxjar文件您需要设置包扩展=“JSON默认”的结果类型是JSON。

Struts2的JSON的-插件- 2.xxjar文件可以用来序列具有制定者成JSON对象的Action类属性。

得到行家的jar依赖

  <dependencies>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.1.8</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-json-plugin</artifactId>
    <version>2.1.8</version>
</dependency>

你可以从这个链接的完整的帮助...

支柱2和JSON响应



文章来源: Struts2 How to Return a JSON Response [duplicate]