将Spring Boot重定向到模板页面

时间:2016-09-27 08:12:13

标签: java spring-boot thymeleaf

我将支付网关与Spring Boot集成 - Thymeleaf

我有支付网关提供的示例应用程序,它基于JSP,如下所示

response.jsp

<%@ page language="java" session="true" %>
<%

String    tranid=request.getParameter("tranid");
String result=request.getParameter("result");
out.println("REDIRECT=https://www.example.com/jsp/result.jsp?tranid="+tranid);

%>

支付网关将呼叫(处理付款后)重定向到response.jsp。在response.jsp内部,他们将重定向到另一个页面以显示结果。

Spring Boot中的相同内容

控制器类(用于提供重定向)

@RequestMapping(value= "/response")
public String responseHandlerSuccess(ServletRequest request,  Model model) {
return "redirect:https://www.example.com/success?tranid="+tranid;
}

@RequestMapping(value = "/success", method = RequestMethod.GET)
public String showProduct(@RequestParam Map<String,String> response, ModelMap response){
System.out.println("Success Received  ...");
return "success" // Success Template
}

我能看到消息“

  

成功收到......

“但页面没有重定向到成功模板。因此支付网关会抛出错误页面。如何使其工作?

2 个答案:

答案 0 :(得分:0)

您需要配置Spring可以解决的文件。您可以使用不同类型的Resolver:ViewBased Resolver来解析模板,使用UrlBased Resolver解析模板和重定向等。 要设置解析器,您需要在via XML或某些配置类中实现。

以下是解析器的示例:

@Configuration
@EnableMvc
@ComponentScan("The package you want spring to scan")
public class WebConfig extends WebMvcConfigurerAdapter{

    @Bean
    public ViewResolver viewResolver(){
        UrlBasedViewResolver resolver = new UrlBasedViewResolver();
        resolver.setPrefix("Your View Directory, in my case it was '/WEB-INF/Views/'");
        resolver.setSuffix("Your Views'extention, .jsp for example");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }
}

要完成配置,我使用了一个扩展AbstractAnnotationConfigDispatcherServletInitializer的类。您需要覆盖3种方法:

protected Class<?>[] getRootConfigClasses();
protected Class<?>[] getServletConfigClasses();
protected String[] getServletMappings();

第二个是您实际使用View解析器的地方。在我的情况下,我只是覆盖它:

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

如果您遵循此指示,它通常会起作用,如果您需要更多解释,请不要犹豫。

答案 1 :(得分:0)

您正在使用 Spring Boot ,因此无需执行此类xml配置。

将给定行添加到application.properties文件

#Page settings
spring.mvc.view.prefix= /view/html/
spring.mvc.view.suffix= .jsp