【问题标题】:Failed to load resource: the server responded with a status of 405 | Spring MVC加载资源失败:服务器响应状态为 405 |春季MVC
【发布时间】:2016-09-22 08:21:42
【问题描述】:

我在使用 @RequestMapping(method = RequestMethod.POST) 注释向控制器类添加方法时遇到问题。问题是当我添加此方法并启动应用程序时。应用程序无法加载资源(css、JS 等)。在浏览器上我得到: 加载资源失败:服务器响应状态为 405(不允许方法) 在运行日志中,我收到以下消息: org.springframework.web.servlet.PageNotFound handleHttpRequestMethodNotSupported 警告:不支持请求方法“GET”

当我从控制器类中删除此方法时,一切正常。不知道为什么会这样。我确定它与 Dispatcher Servlet 映射中的配置或资源无关,因为没有这种方法,一切都可以正常工作。

由于某些业务需求,我需要使用这种方法,否则是不可能的。

任何机构都可以帮助我确定问题所在。

@Controller
public class InvoiceController
{
    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public ModelAndView adminPage() {
        String username;
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        username = auth.getName(); //get logged in username
        username.toUpperCase();
        // Logic to build menue based on the Role of the user.
        HashMap hm = new HashMap();
        OrderItems od = new OrderItems();
        ModelAndView model = new ModelAndView();
        model.addObject("usr", username);
        //Set the object for Menue Links on the Page
        model.addObject("mnue", hm);
        model.setViewName("index");
        model.addObject("odi",od);
        return model;

    }

    @RequestMapping(method = RequestMethod.POST)
    public String save(HttpServletRequest request,
                             HttpServletResponse response,
                             Model model)
    {
        System.out.println("Im here in Genaric Post Method");
        return null;
    }
}

还请注意,我使用的是 Spring Security 配置。和安全有什么关系吗?或者控制器类配置有问题。

提前感谢您的期待。

问候,

D 卡姆兰

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    将端点 url 值添加到请求映射

    @RequestMapping(value="/index", method = RequestMethod.POST)
    

    发生这种情况是因为 Post 方法声明映射到所有路径,因为 Method 和 Controller 类都没有该值

    【讨论】:

    • 它已经在那里了。 /index 工作正常。问题仅在于其他方法。当我删除其他方法时,事情开始运作良好。另一种方法有什么问题?
    • 您似乎没有正确阅读我的答案。如果你声明了一个Controller类和一个没有RequestMapping value属性的方法,spring会将所有路径映射到这个类和方法。您已将“/index”添加到 GET 方法。在 POST 方法中添加“/index”或任何其他值
    • 明白你的意思。问题是我想要一个不应该绑定到任何特定路径的通用方法。我想创建一个多步骤向导样式应用程序的原因,然后在页面的每个帖子调用中,我将在此方法中添加逻辑来处理请求。有什么办法可以做到吗?
    • 我不知道。如果您不打算将此方法用于 POST,则可以删除 @RequestMapping 注释。但是如果确实需要 POST 那么你也需要路径。
    • 谢谢,如果我在类级别添加带有一些绝对路径的@RequestMapping 注释,然后使用该过程。我认为这会奏效吗?
    猜你喜欢
    • 2021-08-26
    • 2018-12-16
    • 2020-11-25
    • 2018-06-18
    • 2016-09-19
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多