gpt4 book ai didi

java - 在 Controller 中调用特定操作

转载 作者:行者123 更新时间:2023-12-01 23:35:59 24 4
gpt4 key购买 nike

我有一个 Controller ,具有如下 2 个操作:

@Controller
@RequestMapping("xyzlogin")
public class XyzloginController
{
@RequestMapping(method = RequestMethod.GET)
public ModelAndView showForm(HttpServletRequest request, ModelMap model)
{
//.... do something....
}

@RequestMapping(value = "/requestXYZ", method = RequestMethod.GET)
public ModelAndView requestXYZ(HttpServletRequest request, ModelMap model)
{
//.... do something with parameter param1.
}
}

在 View 文件中,我可以通过以下方式请求此 Controller 中的操作:

<a href="requestXYZ?param1=abc">Click me to call requestXYZ action</a>

如上例所示,单击超链接后,我想调用 requestXYZ 操作,但收到 404 错误,指出它找不到映射。

我定义的映射错误吗?什么是正确的映射?

谢谢

最佳答案

当您的 href 属性中有非绝对(即不以 / 开头)路径时,浏览器会将其附加到您当前的上下文中。例如,如果您当前位于 localhost:8080/yourapp,请单击

<a href="requestXYZ?param1=abc">Click me to call requestXYZ action</a>

会将您发送至

localhost:8080/yourapp/requestXYZ?param1=abc

就您而言,您处于

localhost:8080/authenticate/authorize/login?param1=abc

因此单击链接会将您发送至

localhost:8080/authenticate/authorize/requestXYZ?param1=abc

这显然(几乎)不存在。

您可以向 href 字符串提供前导 /,以使浏览器根据您的主机地址构建 URL。

您应该从应用程序上下文根构建路径

<a href='<c:url value="/xyzlogin/requestXYZ?param1=abc" />'>Click me to call requestXYZ action</a>

其中ccore标签库。上面将创建

localhost:8080/yourcontextroot/xyzlogin/requestXYZ?param1=abc

Spring 也有自己的标签。

关于java - 在 Controller 中调用特定操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18705819/

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