我正在尝试使用百万美元来制作一个mvc。
我遵循了这个教程,现在工作得很好https://spring.io/guides/gs/securing-web/
但是当我想要映射/ admin / somepage时出现问题,由于某种原因没有找到(即使我在{{1方法
在示例中,他们创建了一个文件addViewController
,有没有办法我避免使用这个文件,我有一个配置,允许我不必在这里添加所有控制器和视图,并从控制器自动解析文件由@RequestMapping?
编辑:这是代码
的src /主/资源/模板/ home.html的
src/main/java/hello/MvcConfig.java
的src /主/资源/模板/ hello.html的
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Spring Security Example</title>
</head>
<body>
<h1>Welcome!</h1>
<p>Click <a th:href="@{/hello}">here</a> to see a greeting.</p>
</body>
</html>
这是我想要摆脱的部分......
的src /主/ JAVA /你好/ MvcConfig.java
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
在控制器上我有
的方法package hello;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/home").setViewName("home");
registry.addViewController("/").setViewName("home");
registry.addViewController("/hello").setViewName("hello");
registry.addViewController("/login").setViewName("login");
}
}
返回@RequestMapping("/home")..
答案 0 :(得分:2)
您可以向RequestMappingHandlerMapping
添加默认处理程序,添加的默认处理程序为Here is。
如果您按照指南使用Spring Boot。您需要获取预配置的RequestMappingHandlerMapping
并设置所需的属性。您可以使用BeanPostProcessor
。
public class YourBeanPostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof RequestMappingHandlerMapping) {
((RequestMappingHandlerMapping) bean).setDefaultHandler(new UrlFilenameController());
}
return bean;
}
}
这种方式匹配的网址将始终传递给UrlFilenameController
以解析为视图名称。
注意:可能需要根据可用HandlerMapping
的数量在不同的HandlerMapping
上注册。现在总是返回UrlFilenameController
,这可能会导致其他HandlerMapping
不再被咨询。