从AJAX调用到Action类,然后到一个jsp页面,它将html作为响应返回到AJAX作为struts2中的响应

时间:2012-11-21 10:31:36

标签: struts2

我对struts很新。这就是我想要实现的目标。

用JSP-1编写的JavaScript函数触发一个AJAX,它使用动作类从数据库中获取数据,jsp-2使用动作类中的数据并使用struts标记形成某些元素,并将此HTML数据输出到添加HTML的JavaScript函数数据到JSP-1。

enter image description here

现在,我使用JSP-2的原因是使用struts标签制作HTML数据。 JSP-2就像一个为JSP-1形成HTML数据的函数,它永远不会显示。 我知道动作类将JSON对象返回给ajax的正常流程,但我无法弄清楚如何进行中间JSP-2页面。

这是我的struts.xml,用于jsp to action和action to ajax flow。

<action name="ajaxAction" class="ActionClass">
            <result name="success" type="json"/>
 </action>

我的问题是如何从动作类转到JSP-2然后响应AJAX?

3 个答案:

答案 0 :(得分:1)

如果您使用的是jquery,可以这样做

$(document).ready(function(){
    var url ="MyAjaxAction.action";
    $("#sectionWhereJSP2WillbeThere").load(url);  
 });

在你的struts动作类中,只需使用普通success(即视为正常动作)

答案 1 :(得分:0)

因此请使用dispatcher结果类型而不是json

<action name="ajaxAction" class="ActionClass">
   <result name="success">JSP-2</result>
</action>

答案 2 :(得分:0)

没有必要考虑JSP-1。它只是Ajax应用程序的交付机制。问题是Ajax请求您需要什么样的响应。您的Javascript Ajax客户端是否需要JSON响应或HTML片段?

如果它想要json,那么我不认为需要JSP-2(尽管你可以使用jsp创建json - 但是当struts提供json结果类型为你做这个时,没有什么理由这样做)。

如果它需要一个HTML片段,那么使用JSP创建它的最佳方法是使用jsp-2。如果是这种情况,您需要将结果类型更改为“dispatcher”,这实际上是默认类型,即您不需要指定它。

<action name="ajaxAction" class="ActionClass">
            <result name="success">/path/to/jsp-2</result>
 </action>