【问题标题】:struts 2 application renders results without JSP. How is this possible?struts 2 应用程序在没有 JSP 的情况下呈现结果。这怎么可能?
【发布时间】:2014-12-03 21:14:44
【问题描述】:

我正在关注 http://www.simplecodestuffs.com/integrating-jquery-datatable-with-struts2-using-ajax-to-implement-gridview/ 上关于 struts 2 的教程

我理解了使用POJO动作类struts.xml配置等核心概念。但是困扰我的是在本教程中,struts.xml中提到了一个名为“grid.jsp”的jsp结果。但是这个页面根本不存在于应用程序中,它仍然有效。

怎么会这样? struts 2会生成一些jsp模板吗?请检查随附的屏幕截图。它有项目结构和struts.xml。

我尝试了各种书籍和教程以及谷歌搜索,但从未讨论过这个话题。请帮忙。我想了解请求到达动作类时的流程。

这类示例也出现在 struts2 展示中。

<?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>
    <package name="default" extends="json-default">
        <action name="dataTablesAction" class="com.action.GridViewAction">
            <result type="json">grid.jsp</result>
        </action>
    </package>

</struts>

【问题讨论】:

  • 你检查过WEB-INF目录吗?
  • 是的。我检查了项目中的所有目录。您也可以从帖子中提供的 URL 下载项目。
  • 当它说“现在创建jsp文件来显示数据......”表示这个文件
  • 本教程是“错误的”,您只需指定&lt;result type="json"/&gt; 中的任何文本都可能会被忽略,因为 json thingy 不希望那里有任何文本。请参阅struts.apache.org/release/2.2.x/docs/json-plugin.html中的“为操作编写映射”部分
  • 根据我收集到的信息(我实际上从未使用过 struts 或类似的东西):索引 jsp 脚本部分中的 sAjaxSource 会导致向您的服务器发出 AJAX http 请求(基本上就像 api.jquery.com/jquery.getjson ) 的 url 包含 dataTablesAction。服务器将其映射到最终生成 json 的操作类。然后该 json 会返回到您的脚本中以更新表。 Ajax 不是重定向,它是当前页面的异步更新,维基百科应该有更多关于它的信息。所以不需要指定jsp。

标签: java jquery jsp struts2


【解决方案1】:

@zapl 已经回答了你,如果他发布他的 cmets 作为答案,我会删除这个答案。

当你写作时

 <result type="json">grid.jsp</result>

它会被翻译成

 <result name="success" type="json"></result>

"success" 将被添加,因为智能默认(如果没有指定名称,则采用“成功”)并且整个 Action 将被序列化为 JSON,因为that's how the JSON plugin works。您可以指定 root 对象,但不能指定 JSP,因为 JSP != JSON,并且因为预计不会在配置中找到原始文本(如 jsp 名称)。您的 grid.jsp 将被完全忽略和裁剪(未经测试,但我很确定)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多