有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以使用ajax request to controller方法而不使用ResponseBy注释来返回重新编译的jsp?

我想在不重新加载页面的情况下重新加载部分页面

我将使用ajax请求来完成它

我发现的所有示例都使用@ResponseBody注释,并且在客户端javaScript上处理xml或json

我的原因-获取htm片段并替换我页面的一部分

结构:

bigJsp。jsp

...
incude small.jsp
...

我想重新命名small.jsp,并在我的页面上替换它,而无需重新加载页面

我找不到这样的例子。你能帮我吗


共 (2) 个答案

  1. # 1 楼答案

    您应该有一个控制器方法returnModelAndView,例如

    @RequestMapping(value = "/small", method = RequestMethod.GET)
    public ModelAndView smallJSP()  {
        ModelAndView modelAndView = new ModelAndView("small");
        return modelAndView;
    }
    

    控制器将搜索名为small、位于默认位置且带有默认后缀的视图(取决于您的配置,例如/WEB-INF/views/small.jsp)。然后,只需通过适当的ajax调用(例如通过jquery)调用该方法

         $.ajax({
                url:"/small",
                dataType: "html",
                type: "GET",          
                success: function (msg) {
                   $(".responseDiv").html(msg);// place your response to some div
                }
            });
    
  2. # 2 楼答案

    尝试执行以下操作:

    1)更换您的小部件。jsp到某个div

    <div id="smallContent"></div>
    

    2)创建创建正确视图的控制器方法:

    @RequestMapping(value = "small", method = RequestMethod.GET)
        public String testSmall(Model model) {
            model.addAttribute("small_message", new Date().toString());
            return "small";
        }
    

    3)创建小型视图(small.jsp):

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <div style="background: red">
    My message: ${small_message}
    </div>
    

    4)使用ajax获取div的html内容:

    <html>
    <body>
    <script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
        <script>
            function reloadSmall() {
                $.get("/small", function(response) {
                    $("#smallContent").html(response);
                });
            }
        </script>
    <div id="smallContent" style="background: green"></div>
    <button onclick="reloadSmall()">Click me</button>
    </body>
    </html>