gpt4 book ai didi

java - Spring: Controller @RequestMapping到jsp

转载 作者:搜寻专家 更新时间:2023-11-01 03:10:09 24 4
gpt4 key购买 nike

使用 Spring 3.1.2

如何从 jsp 引用 CONTROLLER(不是方法)RequestMapping 的注释值,以便我可以构建相对于 Controller 的 URL。如果引用了方法级请求映射,它将导致我的链接不起作用,因此它们不能以任何方式成为 this 的一部分。

例如(注意这个 Controller 的映射是“/foo/test”):

@Controller
@RequestMapping("/foo/test")
public class FooController {

@RequestMapping(value="/this", method=RequestMethod.GET)
public String getThis() {
return "test/this";
}

@RequestMapping(value="/that", method=RequestMethod.GET)
public String getThat() {
return "test/that";
}

@RequestMapping(value="/other", method=RequestMethod.GET)
public String getOther() {
return "test/other";
}
}

...以及来 self 的 this.jsp:

<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<s:url value="${controllerRequestMapping}" var="baseUrl"/>

<a href="${baseUrl}/that">That</a>
<a href="${baseUrl}/other">Other</a>

我需要访问 RequestMapping 的原因是因为我的 View 可能会从多个 Controller 访问。请注意,此 Controller 的映射是“/bar/test”!

@Controller
@RequestMapping("/bar/test")
public class BarController {

@RequestMapping(value="/this", method=RequestMethod.GET)
public String getThis() {
return "test/this";
}

@RequestMapping(value="/that", method=RequestMethod.GET)
public String getThat() {
return "test/that";
}

@RequestMapping(value="/other", method=RequestMethod.GET)
public String getOther() {
return "test/other";
}
}

我的一些 Controller 级请求映射也有路径变量,所以只获取请求映射的字符串值是行不通的。它必须得到解决:

@Controller
@RequestMapping("/something/{anything}/test/")
public class SomethingController {
...
}

更新

也许如果有一种方法可以通过在 Spring URL 标记之前将 Controller 请求映射附加到它来修改上下文路径,那将解决问题。

contextPath = contextPath/controllerRequestMapping

然后,我可以做这样的事情,因为我相信 Spring 会自动检索当前上下文路径:

<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>

<a href="<s:url value="/that"/>">That</a>
<a href="<s:url value="/other"/>">Other</a>

当然,这将是最佳选择!想法?想法...?

提前致谢!

最佳答案

您可以使用 Servlet API 获取 URI。据我所知,没有“Spring”方法可以做到这一点。

@RequestMapping(value="/this", method=RequestMethod.GET)
public String getThis(HttpServletRequest request, Model m) {
m.addAttribute("path", request.getRequestURI());
return "test/this";
}

然后在您的 JSP 中:

<a href="${path}">This</a>

有关 HttpServletRequest 的更多信息,see the API here .

关于java - Spring: Controller @RequestMapping到jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12647605/

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