java - 即使 Spring MVC Controller 中存在映射,也找不到映射

标签 java jquery jsp spring-mvc

我有 Controller EnvironmentController如下

@Controller
@RequestMapping(value = "/dashboard/environments")
public class EnvironmentController {
    /*
    *Other methods
    */
    @RequestMapping(value = "/${envId}/addKey/${region}", method = RequestMethod.POST, produces = "application/json")
    public @ResponseBody String addKey(@PathVariable("envId") Long envId,
            @PathVariable("region") String region, HttpSession session) {
        if (session.getAttribute("loggedin") != null
                && (Boolean) session.getAttribute("loggedin") == true) {
            DUser user = (DUser) session.getAttribute("user");
            List<Role> roles = roleDao.getRoles(userDao.getUserByEmail(user
                    .getEmail()));
            // other codes
        } else {
            session.invalidate();
            return "{unauthorized}";
        }
        return "{}";
    }
}

在我的 JSP 页面中,我使用 jQuery 发布数据,代码如下。

$("#create").on('click',function() {
    alert($("#region").val());
    $.ajax({
        type : "POST",
        url : "${pageContext.request.contextPath}/dashboard/environments/${envId}/addKey/"+$("#region").val(),
        data : $("#region").val(),
        success : success
    });
});

Web 应用程序的 RootContext 为 myapp

我可以在网络浏览器控制台中看到数据被 POST 发送到 http://localhost:8080/myapp/dashboard/environments/2/addKey/us-east- 1..

还在日志中我可以看到以下内容 信息:映射“{[/dashboard/environments/${envId}/addKey/${region}],methods=[POST],params=[],headers=[],consumes=[],products= [application/json],custom=[]}"到 public java.lang.String com.myapp.controller.EnvironmentController.addKey(java.lang.Long,java.lang.String,javax.servlet.http.HttpSession)

当我对网址进行POST时,它会收到警告

警告:在名称为“dispatcher”的 DispatcherServlet 中未找到带有 URI [/myapp/dashboard/environments/2/addKey/us-east-1] 的 HTTP 请求映射

我无法弄清楚为什么当我向其发送数据时没有调用 addKey 方法并且映射不正确。

谢谢。

最佳答案

您的请求映射错误。路径变量占位符不应包含 $。因此正确的形式是 @RequestMapping(value = "/{envId}/addKey/{region}", ...)

关于java - 即使 Spring MVC Controller 中存在映射,也找不到映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27722863/

相关文章:

java - 如何使用java中的基本switch方法洗牌

java - 我在 Java 中找不到这个compareTo(T) 函数的错误

javascript - focus() 无法进行第二次调用

jsp - Tomcat 吞下 SQLException

java - 使用jsp保持用户登录

java - 我必须在 blueJ 中创建 3 个对象并调用 display() 但我什至无法创建对象。请看代码结果

java - 均匀对齐对象

javascript - 使用 Javascript 获取选择输入并在另一部分使用数据

javascript - 无法将字符串传递给另一个函数

java - 菜单项重复