gracias juju84.
de hecho encontre otra opcion y aqui la comparto con usedes:
en el config-struts.xml deben agregar en el accion la propiedad cancellable asi
Código:
<action
attribute="usuarioForm"
input="/jsp/comun/nuevousuario.jsp"
name="usuarioForm"
parameter="dispatch"
path="/usuario"
scope="request"
cancellable="true"
type="com.itsoeh.struts.action.UsuarioAction">
<forward name="mostrar" path="/jsp/comun/display.jsp" />
<forward name="cancelado" path="/jsp/comun/bienvenido.jsp" />
</action>
y en la clase accion pueden hacer algo como esto
Código:
public class UsuarioAction extends DispatchAction {
private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());
public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// Was this transaction cancelled?
if (isCancelled(request)) {
if (log.isInfoEnabled()) {
log.info(
" "
+ mapping.getAttribute()
+ " - Registration transaction was cancelled");
}
removeFormBean(mapping, request); // remueve los form bean obsoletos, abajo esta el metodo
return (mapping.findForward("cancelado"));
}
// aqui el codigo normal del action
return mapping.findForward("mostrar");
}
/**
*
* @param mapping The ActionMapping used to select this instance
* @param request The HTTP request we are processing
*/
protected void removeFormBean(
ActionMapping mapping,
HttpServletRequest request) {
// Remove the obsolete form bean
if (mapping.getAttribute() != null) {
if ("request".equals(mapping.getScope())) {
request.removeAttribute(mapping.getAttribute());
} else {
HttpSession session = request.getSession();
session.removeAttribute(mapping.getAttribute());
}
}
}