【问题标题】:Error : No mapping found for HTTP request with URI spring mvc without xml错误:没有找到带有 URI spring mvc 且没有 xml 的 HTTP 请求的映射
【发布时间】:2020-04-12 23:10:25
【问题描述】:

从控制器返回 Html 页面时出现此错误

org.springframework.web.servlet.PageNotFound noHandlerFound 警告:在名称为“dispatcher”的 DispatcherServlet 中找不到带有 URI [/SpringMVCDemo/WEB-INF/response.html] 的 HTTP 请求的映射

response.html 应该放在哪里?

这是我的代码

Controller class
-----------------
@Controller
public class LoginController {

    @RequestMapping("/login")
    public ModelAndView login(@RequestParam(name = "username") String username,
                             @RequestParam(name = "password") String password){

        String str = "Welcome " + username;
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("response");
        modelAndView.addObject("response",str);

        return modelAndView;
    }
}
Config file
------------
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.skuba.*")
public class MvcConfig extends WebMvcConfigurerAdapter{

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/");
        viewResolver.setSuffix(".html");

        return viewResolver;
    }
}
This is dispatcher controller
------------------------------
public class FrontController extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] {MvcConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[0];
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }
}

【问题讨论】:

    标签: java spring-mvc


    【解决方案1】:

    假设视图文件位于正确的目录中(即“/WEB-INF/”)尝试将以下内容添加到MvcConfig 类中。

    // Use the DefaultServletHandlerConfigurer @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); }

    【讨论】:

    • 谢谢。它正在工作。但是即使我在 JSP 中有 "isELIgnored="false"" 但它仍然显示结果:${response} 这是我的结果 jsp 代码 结果:${response} `
    • 是否意味着表达式 ${response} 被评估并打印在页面上?而且您不希望它被评估和打印?
    • 是的,我正在使用键“响应”从我的 LoginController(如上面的代码)传递值。我想在 html 页面而不是 ${response} 中显示。已经尝试过 isELIgnored="false"
    • "isELIgnored="false" 实际上就足够了。我无法重现您的问题。您能告诉我您使用的是哪个版本的 Spring。
    • 春季版:4.3.3.RELEASE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2012-10-26
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多