2016-09-27 3 views
0

Im интеграции платежный шлюз с Spring Boot - ThymeleafПеренаправление Spring загрузки в шаблон страницы

я пример приложения обеспечивает платежный шлюз обеспечивают, основанный 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 они перенаправляются на другую страницу, чтобы показать результат.

То же самое в Спринг загрузки

класс контроллера (который дается, чтобы обеспечить перенаправление)

@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 
} 

Im в состоянии увидеть сообщение "

Sucess Received ...

"но страница не перенаправлена ​​на успех шаблон. Таким образом, платежный шлюз выдает страницу с ошибкой. Как заставить его работать?

+0

Это не потому, что вы возвращать строку, а не страницы. – xenteros

+0

sucess - это мое имя шаблона. Он должен решить шаблон? – syv

ответ

0

Вам необходимо настроить файлы, которые может решить Spring. Вы можете использовать разный тип Resolver: ViewBased Resolver для разрешения шаблонов, UrlBased Resolver для разрешения шаблона и перенаправления и т. Д. Чтобы настроить свой резольвер, вам нужно реализовать его через 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(); 

Во-вторых, вы фактически используете распознаватель вида. В моем случае я просто переопределить это следующим образом:

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

Если вы будете следовать этому примеру он должен нормально работать, не стесняйтесь, если вам нужно больше объяснений.

0

Вы используете Весеннюю загрузку, и поэтому не нужно делать такие xml-конфиги.

Добавить данной строку вашего application.properties файл

#Page settings 
spring.mvc.view.prefix= /view/html/ 
spring.mvc.view.suffix= .jsp 
Смежные вопросы