gpt4 book ai didi

spring - 如何在 Spring RedirectView 中添加对象

转载 作者:行者123 更新时间:2023-12-01 07:56:29 26 4
gpt4 key购买 nike

我对 Spring 有点陌生,我想知道如何在 RedirectView 中 addOject 就像在 ModelAndView 中一样,我可以在其中添加可在 View 中使用的对象。

 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。

最佳答案

要通过重定向传输数据,请使用 RedirectAttributes.addFlashAttribute(key, value)
从文档:

A RedirectAttributes model is empty when the method is called and is never used unless the method returns a redirect view name or a RedirectView.

After the redirect, flash attributes are automatically added to the model of the controller that serves the target URL.

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);
}

关于spring - 如何在 Spring RedirectView 中添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24668988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com