【问题标题】:Cannot access struts action data from nested JSP无法从嵌套 JSP 访问 struts 动作数据
【发布时间】:2012-02-29 09:31:27
【问题描述】:

我是第一次使用 Struts 2 + Spring + Hibernate 架构。我把这个project 作为构建它的参考,它可以工作。我可以使用 struts 标记在我的 index.jsp 中列出数据库表,但这不适用于加载到 index.jsp 内的 DIV 容器中的嵌套 JSP。

index.jsp 有一个 <div class="art-nav"></div> 并使用 js 加载另一个 jsp:

    $(".art-nav").load("./menu.jsp"); 

在 index.jsp 中用于列出数据库表的 struts 标记在 menu.jsp 中不起作用。我不确定问题是我加载此 JSP 的方式,还是有必要在加载 menu.jsp 之前从 Struts 2 执行某些操作...

基本上,JSP 使用 AJAX,我正在使它们适应这种架构,但由于缺乏经验,我面临着一些问题。

提前感谢您的帮助!

【问题讨论】:

  • 不太确定 Jquery 是如何执行此操作的,但是为了让 S2 标记工作,它应该通过适当的请求周期来初始化值堆栈和其他所需的 S2 对象

标签: ajax spring jsp html struts2


【解决方案1】:

你应该包括第二个jsp如下:

<div class="art-nav">    
    <%@ include file="/WEB-INF/jsp/menu.jsp"%>
</div>

如果您通过 javascript 加载您的 jsp,则响应不会被转发到该 jsp。

如果你真的想通过 javascript 加载一个 jsp,你应该创建一个新的动作 (menu.action),它返回一个解析的 jsp 并将它包含在现有的 html 中。 (虽然我个人不太喜欢这种技术。)

【讨论】:

  • 我尝试了导入,但没有任何区别...只是澄清一下:第二个 JSP 已正确加载,但 struts 标签无法访问数据。使用 struts-jquery 标签怎么样?这会有所作为吗?
  • 我在示例中添加了 div。需要明确的是,您不是在 JS 块中导入 jsp,而是在页面的实际 html 部分中导入。
  • 成功了!但是现在,我可以像现在使用$(".art-nav").load("./menu.jsp") 那样刷新/重新加载 DIV 内容吗?我可以在同一个 DIV 中加载不同的 JSP 吗?
  • 您可以根据需要加载不同的 jsp,但无法像这样重新加载 div 的内容。如果你这样做,你必须重新加载整个页面。要重新加载 div 的内容,您应该有一个 menu.action 操作并执行您最初想做的事情。但这并没有在问题中说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 2021-11-23
相关资源
最近更新 更多