перенаправление на SimpleformController - PullRequest
0 голосов
/ 18 мая 2011

У меня есть simpleformController, который должен обработать запрос get и опубликовать оба.В то время как получает пользователь должен быть перенаправлен на экран входа в систему, который прекрасно работает, если используется handlerequest, но onSubmit не вызывается при публикации страницы ??Любая идея, почему?

Я попытался изменить handlerequest на private void метод displayForm и вызвал его из метода formBackingObject, который прекрасно работает при получении, а также корректно вызывает метод onSubmit кактребуется.

Но единственная проблема заключается в вызове displayForm закрытого метода void. Я не могу перенаправить страницу для входа в систему, так как formBackingObject метод не имеет объекта ответа, и я не могу использовать return ModelView из private method displayForm as formBackingObject возвращает Object.

@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception {
  if (logger.isDebugEnabled()) {
    logger.debug("In formBackingObject()... ");
  }
  Object obj = request.getSession().getAttribute(CURRENT_FORM);
  if (obj != null) {
    if (logger.isDebugEnabled()){
      logger.debug("update profile details form already exist, returning...");
    }
    return obj;
  }

  MyForm Form = new MyForm();

  request.getSession().setAttribute(CURRENT_FORM, Form);

  displayForm(request);

  return Form;
}

Исходный метод: не позволяет обрабатывать сообщение onSubmit

@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

  mv = new ModelAndView(new RedirectView(request.getContextPath() + "login.htm"));

  RequestCache requestCache = new HttpSessionRequestCache();
  requestCache.saveRequest(request, response);

  mv.addObject("c_name",getPManager().getCName());

  request.getSession().setAttribute("login_from_pac","yes");
  return mv;
}

Новый метод:Чтобы загрузить форму, но пользователь должен быть вынужден войти (перенаправлен на вход, если вход в систему правильный, пользователь может увидеть эту форму), прежде чем перейти к этой форме.Этот метод вызывается из formBackingObject метода для загрузки формы, но не имеет объекта ответа для перенаправления на страницу входа.Следующий метод не работает

private void displayForm(HttpServletRequest request) throws Exception {

  HttpServletResponse response = null; -->
  ModelAndView mav = null;
  mav=new ModelAndView(new RedirectView(request.getContextPath() + "login.htm"));

  RequestCache requestCache = new HttpSessionRequestCache();
  requestCache.saveRequest(request, response);

  //mav.addObject("c_name",getPManager().getCName());

  request.getSession().setAttribute("c_name", getPManager().getCName());

  request.getSession().setAttribute("login_from_pac","yes");
  //return mav;
}

1 Ответ

0 голосов
/ 19 мая 2011

Привет, я наконец-то смог перенаправить на страницу входа, прежде чем позвонить на главную страницу.Я переопределяю isFormSubmission и использовал showForm вместо handlerequest или любого частного метода, вызываемого из formBackingObject.Вот код

@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception {           
    if (logger.isDebugEnabled()) {
        logger.debug("In formBackingObject()... ");
        }
    Object obj = request.getSession().getAttribute(CURRENT_FORM);
    if (obj != null) {
                    }
        return obj;
    }

    MyForm Form = new MyForm(); 

    request.getSession().setAttribute(CURRENT_FORM, Form);


    return Form;
}

/**
 * Submit form
 * @param HttpServletRequest
 * @param HttpServletResponse
 * @param Object
 * @param BindException
 * @throws Exception 
 */
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {

    if (logger.isDebugEnabled()){
    logger.debug("onSubmit");
}



        ModelAndView mav;
        mav = new ModelAndView("formactivated");

        MyForm Form = (MyForm) command;


        try{                             
//do logic here

                                                    }

@Override
protected ModelAndView showForm(HttpServletRequest request, HttpServletResponse response, BindException errors)throws Exception {
    if (logger.isDebugEnabled()) {
        logger.debug("In showForm ... ");
    }

    if(errors.hasErrors()){
        if (logger.isDebugEnabled()) {
            logger.debug("In showForm  has errors... ");
        }
    ModelAndView mav;
    mav = new ModelAndView("formactivated");    
    mav.addAllObjects(errors.getModel());           
    return mav;
    }


    other login here

возвращение успешного просмотра
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...