我正在尝试使用Spring启动的快速原型。
我有以下控制器代码减去导入
@EnableAutoConfiguration
@RestController
@Controller
public class IndexController{
@RequestMapping(value = "/")
public ModelAndView firstPage(HttpServletRequest request, HttpServletResponse response){
ModelAndView mv = new ModelAndView("index");
mv.addObject("message", Calendar.getInstance().getTime().toString());
return mv;
}
@RequestMapping(value="/gotoNextPage",method = RequestMethod.GET)
public ModelAndView gotoNextPage(HttpServletRequest request, HttpServletResponse response){
System.out.println("Inside gotoNextPage!!!!!!");
ModelAndView mv = new ModelAndView("redirect:nextpage");
mv.addObject("message", "next page");
return mv;
}
}
从我的HTML中,我调用了/ gotoNextPage,在我的服务器中,我看到了里面的gotoNextPage!打印声明。但是,nextPage不会加载。如果我不使用重定向并输入http://localhost:8080/gotoNextPage,则HTML内容加载正常。此外,index.html还可以加载
我正在使用spring boot mvc,thymeleaf,angularjs
我的项目结构如下所示: enter image description here
我的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>ng-spring-boot-helloworld</groupId>
<artifactId>ng-spring-boot-helloworld</artifactId>
<version>1.0.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.0.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.2.7.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
请帮忙。
提前致谢。
答案 0 :(得分:3)
尝试使用RedirectView explicite
@RequestMapping(value="/gotoNextPage",method = RequestMethod.GET)
public ModelAndView gotoNextPage(HttpServletRequest request, HttpServletResponse response){
System.out.println("Inside gotoNextPage!!!!!!");
ModelMap model = new ModelMap();
model.add("message", "next page");
return new ModelAndView(
new RedirectView("/nextpage", true),
//or new RedirectView("/nextpage.html", true),
model
);
}
答案 1 :(得分:3)
我尝试简化使用Model
的方法并返回一个简单的String
:
@RequestMapping(value="/gotoNextPage",method = RequestMethod.GET)
public String gotoNextPage(Model model){
LOG.debug("Inside gotoNextPage!!!!!!");
model.addAttribute("message", "next page");
return "redirect:nextpage.html";
}
答案 2 :(得分:0)
问题是在客户端通过xmlhttprequest对象进行调用。我不得不处理事件的完成。我在客户端上删除了$ http.get调用并改为使用了window.location.href。我的控制器重定向,页面自动加载。
答案 3 :(得分:0)
如果你想使用&#34;重定向:&#34;使用springboot,你必须注入&#34; InternalResourceViewResolver&#34;。虽然Spring Boot提供自动配置,但如果你使用&#34; @ EnableWebMvc&#34;,&#34; InternalResourceViewResolver&#34;不会注射。look here
答案 4 :(得分:0)
如果您尝试重定向而无法正常工作,请记住不要添加@ResponseBody
注释。
因此,该不会有效:
@PostMapping(value = "/agregar")
@ResponseBody // Annotation here
public String guardarProducto() {
// magic here
return "redirect:/productos/mostrar";
}
但是此可以(删除@ResponseBody
注释):
@PostMapping(value = "/agregar")
public String guardarProducto() {
// magic here
return "redirect:/productos/mostrar";
}
有关Spring Boot here中的重定向的更多信息。