【问题标题】:How to return jsp page in spring mvc 3 ajax call如何在spring mvc 3 ajax调用中返回jsp页面
【发布时间】:2014-09-26 16:13:06
【问题描述】:

我有一个包含页眉、页脚、左面板和主要内容的主页。我想在单击左侧面板时动态更改主要内容。为此,我使用 ajax 调用,ajax 将调用控制器,控制器将返回我将在主要内容中替换的 jsp。

但我面临的问题是,如果我使用纯 html 编码,我可以正确获取 JSP,但如果我使用 spring 形式,它就无法正常工作。

我需要在所有jsp中声明taglib还是只在Dashboard jsp中声明。

  1. 如果我在所有子 jsp 中声明 taglib,那么它不起作用,我不声明 form:input 不渲染到 html

  2. 我们可以在 ajax 调用中返回 jsp 以替换主要内容吗,因为 here 它说只有 @ResponseBody (JSON) 可以在 ajax 调用中使用。

  3. 我使用 ajax 调用是因为我不想重新加载所有页眉、页脚和左侧面板,因为它们将始终保持不变。

Ajax 代码

<script type="text/javascript">
  $(".ldMainContent").click(function(){
    var actionName = this.id;
    actionName = "${pageContext.request.contextPath}/sadmin/forward/"+actionName;
         $.ajax({
            url:actionName,
            type:"POST",
            data:"URL",
            success:function(result){
            $("#mainContent").html(result);              
          }
       });  
   });
    
</script>

我在设计中使用引导程序

【问题讨论】:

    标签: ajax jsp spring-mvc


    【解决方案1】:

    可以使用 jQuery 的 load 方法加载内容。

    代码将是

    $(".ldMainContent").click(function(){
       var actionName = this.id;
       actionName = "${pageContext.request.contextPath}/sadmin/forward/"+actionName;
       $("#mainContent").load(actionName);  
    })
    

    在您的控制器中没有@ResponseBody,它用于将对象作为 JSON 或 XML 返回。控制器应返回 JSP 页面的视图,该视图应仅在 mainContent 中包含您想要的内容。

    我需要在所有jsp 中声明taglib 还是只在Dashboard jsp 中声明taglib。

    是的,你必须声明你正在使用标签的 jsp 文件的标签库。

    【讨论】:

    • 感谢您的帮助。实际上我的页面没有被渲染,因为表单绑定错误并且因为那个表单:输入标签没有被渲染。您的方法也有效,但仅支持 get 方法。
    • 感谢您解决我对 taglib 的其他查询。我会将你的答案标记为接受,但是有没有办法在 jquery 加载函数中使用 post 方法。
    • 如文档api.jquery.com/load中所述,如果您传递数据,则将使用post方法。
    • 如何将我的 url 转换为对象?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2011-10-21
    • 1970-01-01
    • 2010-11-11
    • 2018-11-26
    • 1970-01-01
    相关资源
    最近更新 更多