Приложение, использующее pom.file
, использует Spring Boot & Spring MVC & Rest template. Если развернуть приложение (или начать с класса Spring загрузки Application.java) и перейдите к http://localhost:8080/app-name/user/{userID}
тогда я получаю это исключение:Spring URL-адрес возврата MVC неправильно строит
HTTP Status 404 -/POC-приложение/пользователь/WEB-INF/Views/пользователя .jsp
Как вы можете видеть, это добавляя вид с «пользователь». Вот код, конфигурация и pom.xml
файла:
@Controller
public class UserController {
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String listAllUsers(Model model) {
model.addAttribute("users", getUsers());
return "user-list";
}
@RequestMapping(value = "/user/{userId}", method = RequestMethod.GET)
public String showUserDetail(@PathVariable("userId") int userId, Model model) {
//not checking the list with id, this is just for test
UserBean bean1 = new UserBean();
bean1.setBinNumber("123456");
bean1.setFullName("User One");
bean1.setGuid("abcdef");
bean1.setShortName("User1");
model.addAttribute("user",bean1);
return "user";
}
private List<UserBean> getUsers(){
List<UserBean> list = new ArrayList<UserBean>();
UserBean bean1 = new UserBean();
bean1.setBinNumber("123456");
bean1.setFullName("User One");
bean1.setGuid("abcdef");
bean1.setShortName("User1");
UserBean bean2 = new UserBean();
bean2.setBinNumber("987654");
bean2.setFullName("User Two");
bean2.setGuid("xyzabc");
bean2.setShortName("User2");
UserBean bean3 = new UserBean();
bean3.setBinNumber("555555");
bean3.setFullName("User Three");
bean3.setGuid("hghghg");
bean3.setShortName("User3");
list.add(bean1);
list.add(bean2);
list.add(bean3);
return list;
}
}
application.properties файл
server.port: 8080
management.port: 8001
management.address: 127.0.0.1
spring.view.prefix: WEB-INF/views/
spring.view.suffix: .jsp
Spring Загрузочный Application.java
@ComponentScan("com.company.project")
@Configuration
@SpringBootApplication
public class ProjectAdminWebPocApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(VoucherAdminWebPocApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(VoucherAdminWebPocApplication.class);
}
@Bean
public ErrorPageFilter errorPageFilter() {
return new ErrorPageFilter();
}
@Bean
public FilterRegistrationBean disableSpringBootErrorFilter(ErrorPageFilter filter) {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(filter);
filterRegistrationBean.setEnabled(false);
return filterRegistrationBean;
}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company.project</groupId>
<artifactId>poc-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>poc-app</name>
<description>Proof of concept project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Примечание: нет никаких проблем, если я перейти к http://localhost:8080/app-name/user - это отлично работает
Ваше мнение префикс должен быть '/ WEB-INF/вид /' ... Обратите внимание, ведущий '/' ... –
Привет @ M.Deinum спасибо много. Это помогло! И это снова доказало, что простые вещи могут вызвать большие проблемы :) Кстати, если бы вы могли добавить это в качестве ответа, я мог бы с радостью отметить как принятый ответ. – huzeyfe