Я просмотрел ответы с той же проблемой, но нет ли в Struts способа по умолчанию, позволяющего предотвратить повторную отправку? Кроме того, в моем случае, если я сбрасываю поля формы, старые значения все равно сохраняются (но как они получают эти значения)?
У меня есть класс действия отправки:
public class QrcAction extends DispatchAction
{
public ActionForward waiverPage( final ActionMapping inMapping,
final ActionForm inForm,
final HttpServletRequest inRequest,
final HttpServletResponse inResponse )
{
QrcForm qrcForm = (QrcForm) inForm;
if ( StringUtils.isEmpty( qrcForm.getCustomerId() ) )
{
ActionMessages errors = getErrors( inRequest );
errors.add( IAppConstants.APP_ERROR, new ActionMessage( IPropertiesConstant.ERROR_INVALID_CUSTOMER_ID ) );
saveErrors( inRequest, errors );
return inMapping.findForward( IActionForwardConstant.QRC_SEARCH_CUSTOMER_PAGE );
}
qrcForm.setCustWaiverPojo( new CrmCustWaiverPojo() );
qrcForm.setRemarksPojo( new RemarksPojo() );
return inMapping.findForward( IActionForwardConstant.WAIVER_PAGE );
}
public ActionForward applyWaiver( final ActionMapping inMapping,
final ActionForm inForm,
final HttpServletRequest inRequest,
final HttpServletResponse inResponse )
{
String forward = IActionForwardConstant.WAIVER_PAGE;
QrcForm qrcForm = (QrcForm) inForm;
ActionMessages messages = getMessages( inRequest );
ActionMessages errors = getErrors( inRequest );
CrmuserDetailsDto userDto = (CrmuserDetailsDto) inRequest.getSession( false )
.getAttribute( IAppConstants.CRM_USER_OBJECT );
double waiverLimit = 0;
if ( StringUtils.isNotEmpty( userDto.getWaiverLimitAmmount() ) )
waiverLimit = Double.parseDouble( userDto.getWaiverLimitAmmount() );
if ( waiverLimit < qrcForm.getCustWaiverPojo().getWaiverAmount().doubleValue() )
{
errors.add( IAppConstants.APP_ERROR, new ActionMessage( IPropertiesConstant.ERROR_INVALID_WAIVER_LIMIT,
waiverLimit ) );
}
QrcFormHelper.validateWaiver( errors, qrcForm ); // validates pojo fields
if ( errors.isEmpty() )
{
// saving data to database
if ( success )
{
messages.add( IAppConstants.APP_MESSAGE, new ActionMessage( "success.msg.key" ) );
// resetting the form fields
qrcForm.setCustWaiverPojo( new CrmCustWaiverPojo() );
qrcForm.setRemarksPojo( new RemarksPojo() );
qrcForm.setSrTicketNo( null );
}
else
errors.add( IAppConstants.APP_ERROR, new ActionMessage( "error.msg.key" ) );
}
saveErrors( inRequest, errors );
saveMessages( inRequest, messages );
return inMapping.findForward( forward );
}
}
Вызов waiverPage() вызывается для отображения формы и передается в метод applyWaiver(). В applyWaiver() при успешном сохранении значений я сбрасываю поля формы и пересылаю их на ту же страницу. После отправки и получения успешного результата отображается сообщение и форма очищается, и после этого, если я обновлю ее снова, в базу данных будет сделана запись с теми же ранее введенными значениями.
Может ли быть какое-либо решение этой проблемы?
ОБНОВЛЕНИЕ:
waiver.jsp :
Goodwill
Process
Select Category
Please Select
Amount
Bill No.
Please Select
20140101
20140201
20140301
20140401
Ticket ID
Remarks
Подробнее здесь: https://stackoverflow.com/questions/266 ... n-struts-1
Как предотвратить повторную отправку формы при обновлении в Struts 1? [дубликат] ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение