首页 > 解决方案 > 如何在 Spring thymeleaf 应用程序中获取调用控制器的 url

问题描述

我有两个页面链接到同一个新页面。我需要做的是传递当前页面,以便新页面在完成需要完成的操作后返回到它。

假设我有两页: /user/46#updateInfo/child/993#updateInfo

两个页面都有一个 <a id="upload-image" th:href="@{/documents/upload/__${id}__}" class="btn btn-primary"> Upload Image </a> 触发控制器的按钮:

@GetMapping({documentType}/{userId})
public ModelAndView uploadImage(ModelAndView mav, 
                                @PathVariable(name="documentType") Optional<DocumentType> documentType, 
                                @PathVariable(name="userId") Optional<String> userId,
                                @RequestParam(name="returnUrl") Optional<String> returnUrl) {

   // do stuff here
   mav.addObject("returnUrl", returnUrl);
   mav.setViewName("uploadImages");
   return mav;
}

我尝试使用上传按钮在页面的脚本部分添加以下内容:

$(document).ready(function() {
   $('#upload-image').prop("value", window.location.pathname + window.location.hash);
   $('#upload-image').prop("returnUrl", window.location.pathname + window.location.hash);
}

但是该值不会显示在控制器中。而且我认为必须有一种更简单的方法。

同样,目标是在加载新页面时(在此示例uploadImages页面中),用户将上传图像或单击取消按钮,然后返回到/user/46#updateInfo/child/993#updateInfo页面,该页面最初称为 uploadImages 页面。

标签: javascriptjavaspringthymeleaf

解决方案


将 HttpServletRequest 对象添加到控制器方法的参数列表中,并在该控制器内对该对象调用 getRequestURI() 方法。这应该可以完成工作 - 该方法返回一个包含请求 URI 完整路径的字符串


推荐阅读