[SPRING] Spring RedirectView에서 어떻게 addObject를 할 것인가?
SPRINGSpring RedirectView에서 어떻게 addObject를 할 것인가?
나는 Spring을 처음 접했고 ModelAndView에서와 같이 RedirectView에 addOject를 추가하는 방법을 알고 싶습니다.이 뷰에서 사용할 수있는 객체를 추가 할 수 있습니다.
mnv = new ModelAndView( FORM_URL );
mnv.addObject( "wpassbook", passbook );
return mnv;
RedirectView redirectView = new RedirectView( "/credit" + FORM_URL );
return new ModelAndView( redirectView );
어쨌든 여기 전체적인 방법이 있습니다 :
/**
* Accepts POST request for this resource url.
*
* @param formBean bean containing values entered by the user
* @param bindingResult contains validation failure messages if form bean is invalid
* @param request instance of HttpServletRequest created by the container
* @return the presentation layer & model object with errors to be rendered if validation fails, if successful a
* redirect is done.
*/
@RequestMapping( value = { FORM_URL }, method = RequestMethod.POST )
public ModelAndView processData( @ModelAttribute( "bean" ) @Valid final HostFinancialRequest formBean,
final BindingResult bindingResult, HttpServletRequest request, @RequestParam("passbook") String passbook )
{
ModelAndView mnv = null;
if ( request.getSession() == null )
{
mnv = new ModelAndView( "timeout.jsp" );
// display session timeout page
// add session timeout message error
mnv.addObject( DepositsControllerUtil.VAR_ERROR_MESSAGE,
ErrorCode.BDS_USER_SESSION_TIMEOUT.getDescription() );
return mnv;
}
// check if validation failed
if ( bindingResult.hasErrors() )
{
mnv = new ModelAndView( FORMVIEW );
// check if teller override boolean flag is to be enabled
DepositsControllerUtil.checkTellerOverrideError( mnv, bindingResult );
// add static values
loadDefault( mnv.getModelMap() );
// return to presentation layer with model that contains errors
return mnv;
}
/* ======== Validation if successful, continue processing then do a redirect======= */
// add required fields
fieldGenerator.populateConstantHeader( formBean, request );
// save transaction
Journal journal = journalManagerImpl.saveJournal( formBean );
// convert the id to be code before sending to host
Currency currency = currencyManagerImpl.get( journal.getCurrency().getCurrCode() );
formBean.setCurrency( Integer.valueOf( currency.getCurrCode() ) );
// send to host
Map<String, Object> returnMap = hostConnectionDelegate.invoke( formBean, wsBean );
// get response from the returned map
HostRequest response = HostConnectionDelegateUtil.getHostResponse( returnMap );
accountPostingValidator.validate( response, bindingResult );
// check if validation failed
if ( bindingResult.hasErrors() )
{
mnv = new ModelAndView( FORMVIEW );
// check if teller override boolean flag is to be enabled
DepositsControllerUtil.checkTellerOverrideError( mnv, bindingResult );
// add static values
loadDefault( mnv.getModelMap() );
mnv.addObject( "postingRestrictionCode", response.getPostingRestrictionCode() );
// return to presentation layer with model that contains errors
return mnv;
}
else
{
// update transaction table based on host response
if ( !HostConnectionDelegateUtil.isApproved( response ) )
{
journal.setErrorCode( response.getErrorCode() );
journal.setStatus( response.getStatus() );
}
else
{
journal.setStatus( response.getStatus() );
}
// save journal
journalManagerImpl.saveJournal( journal );
if ( request.getSession() != null )
{
// add response to session for the presentation layer to display
// transaction results.
request.getSession().setAttribute( "bean", response );
}
RedirectView redirectView = new RedirectView( "/credit" + FORM_URL );
return new ModelAndView( redirectView );
}
}
아래 코드에서 위의 코드를 구현하고 싶습니다.
TIA.
해결법
-
==============================
1.리디렉션을 통해 데이터를 전달하려면 RedirectAttributes.addFlashAttribute (key, value)를 사용합니다.
리디렉션을 통해 데이터를 전달하려면 RedirectAttributes.addFlashAttribute (key, value)를 사용합니다.
문서에서 :
public ModelAndView processData( @Valid final HostFinancialRequest formBean, final BindingResult bindingResult, HttpServletRequest request, @RequestParam String passbook, RedirectAttributes redirectAttributes) { // do work an then setup the redirect attributes redirectAttributes.addFlashAttribute("key", value); return new ModelAndView("redirect:/credit" + FORM_URL); }
from https://stackoverflow.com/questions/24668988/how-do-i-addobject-in-spring-redirectview by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 MVC mvc : 자원 위치 속성 (0) | 2019.01.21 |
---|---|
[SPRING] 스프링 4에서 주석 기반 유효성 검사를 설정하는 방법은 무엇입니까? (0) | 2019.01.21 |
[SPRING] Cordova POST - 금지 된 요청 403. Dispatcher 서블릿에 도달하지 않음 (0) | 2019.01.21 |
[SPRING] Spring JPA : 동일한 쿼리 인터페이스에서 다중 프로젝션 사용하기 (0) | 2019.01.21 |
[SPRING] 봄 트랜잭션 cpool. 어느 것을 사용합니까? (0) | 2019.01.21 |