gpt4 book ai didi

ajax - 在 Spring MVC 中渲染部分 JSP 片段?

转载 作者:行者123 更新时间:2023-12-03 12:13:26 25 4
gpt4 key购买 nike

我对 Spring MVC 很陌生,并试图弄清楚如何在不刷新整个页面的情况下呈现部分 View 。我想:

  • 如果我可以向后端发布请求,在这种情况下,是 Spring Controller 方法
  • 并且如果该方法填充模型属性,然后将具有指定 View 名称映射的ModelAndView对象返回到JSP文件中,JSP就能够生成必要的HTML片段。
  • 返回的 HTML 片段将插入到 DIV 占位符中。

  • 这可能行不通,但我不确定它有什么问题?就调用 JSP 来呈现 View 而言,我得到了,但由于某种原因,我放入 session 中的模型属性似乎不存在。

    如果有类似经验的人能提供一些关于这个主题的例子,或者指出它可能出错的地方,我将不胜感激。

    我从 Spring web flow 中阅读了一些内容来处理带有碎片 View 的 Ajax 请求,但我不确定我是否了解它的实际工作原理。

    最佳答案

    我不会说我在下面的回答一定会回答你的问题,但是当我试图复制 Spring AjaxEventDecoration 时,我通过谷歌到达了这个页面。 (只加载页面的片段),所以这是我现在发现的,以防其他人到达这里:

    快速回答是确保您设置了XMLHttpRequest 的“接受”属性。到 'text/html;type=ajax' 然后告诉 Spring MVC 只返回由 URL 参数 'fragments' 指定的(逗号分隔的)片段。

    我正在使用 Tiles服务器端和 jQuery客户端,这是我设置的粗略概述:

    示例 webmvc-config.xml

    ...
    <bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.js.ajax.tiles2.AjaxTilesView" />
    </bean>
    ...

    示例页面的 Tiles 配置
    <!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
    "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

    <tiles-definitions>

    <definition name="eventPage" extends="twoColumnLayout">
    <put-attribute name="title" value="My Event Page" />
    <put-attribute name="view" value="/WEB-INF/jsp/viewText.jsp" />
    <put-attribute name="objectViewer" value="/WEB-INF/jsp/viewEvent.jsp" />
    </definition>

    </tiles-definitions>

    我有一个 Java Controller 类,它返回 ModelMap 的实例映射到请求'eventPage'(在我的情况下为.html)。:
    @Controller
    public class EventPageController
    {
    /**
    * Method to handle main my events page.
    */
    @RequestMapping(value = "/eventPage.html", method = RequestMethod.GET)
    public ModelMap pageDisplayHandlerForEvents(ModelMap model, HttpServletRequest req)
    {
    ...
    }
    }

    然后是我的 JavaScript 客户端代码(例如,始终加载“objectViewer”片段):

    注意:作为片段加载的 HTML 元素必须具有与片段 ID 匹配的 ID 属性。
    $(".springFragmentLoader").click(function()
    {
    $.ajax(__contextRoot + "/eventPage.html?fragments=objectViewer", {
    beforeSend: function(req) {
    req.setRequestHeader("Accept", "text/html;type=ajax");
    },
    complete : function(jqXHR)
    {
    $("#objectViewer").html(jqXHR.responseText);
    }
    });
    }

    更多详情见 Handling Ajax Requests .

    希望有帮助。

    关于ajax - 在 Spring MVC 中渲染部分 JSP 片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057136/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com