【问题标题】:return json object using servlet使用 servlet 返回 json 对象
【发布时间】:2013-07-30 20:31:44
【问题描述】:

我有一个 servlet。它的工作原理是这样的——我发送动作名称,servlet 创建动作对象,执行一些任务,然后返回字符串view 作为结果——我应该发送给用户的页面。 Servlet 对于 doGETdoPost 的工作方式相同。

    String name = getActionName(req);

    Action action = (Action) pico.getComponentInstance(name);

    String view = action.exec(req, resp);
    // router
    if (view.startsWith("redirect:")) {
        resp.sendRedirect(view.substring("redirect:".length(),
                view.length()));
    } else {
        getServletContext().getRequestDispatcher(
                "/" + view + ".jsp").forward(req, resp);
    } 

我有 AjaxAction,我从请求中获取值,从数据库中获取对象,将其转换为 json 字符串。但是如何从行动中恢复它呢?动作返回字符串,表示用户应该被发送到的下一页。我将他发送到main 页面。

    String requestId = req.getParameter("requestId");
    Long id = Long.valueOf(requestId);
    Request item = requestDao.read(id); 
    String json = "";
    json = new Gson().toJson(item);

    resp.setContentType("application/json");
    resp.setCharacterEncoding("UTF-8");
    try {
        resp.getWriter().write(json);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "main";

每次我更改<select>(使用id = "re")中的值时,我都会发送对JSON对象的请求。

   $("#re").change(function() {
        var $id = $('#re').val();
        $.get('AjaxAction.do', {
            requestId : $id
        }, function(respJSON) {
                            alert(respJSON);
            $.each(respJson, function(key, value) {
                $('#' + key).val(value);
            });
        });
    });

但是alert 既没有出现,也没有#+key 中的值发生变化。所以似乎功能不起作用。 那么如何正确地从 Action 中返回 JSON 对象呢? 我调试器AjaxAction 创建对象和return "main";

【问题讨论】:

    标签: jquery json jsp servlets


    【解决方案1】:
    1. return "main"; 更改为return null;
    2. 之后,您将能够在同一页面上获得 ajax 响应和 alert();
    3. 如果需要,您现在可以通过 document.location="anotherpage"; 将用户重定向到另一个页面,而不是警告

    【讨论】:

      猜你喜欢
      • 2018-01-30
      • 2011-01-01
      • 2015-02-02
      • 1970-01-01
      • 2018-01-07
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      相关资源
      最近更新 更多