我的控制器中有一个updateNewPassword(),它是第一次从请求中获取hString的,当第二次被调用时,我需要再次访问hString,因此请将其添加到ModelAndView对象mav之前,返回语句如下,但是在第二次调用updateNewPassword()时,将hString设置为null。有人可以帮我解决这个问题吗?

我正在使用Spring MVC 4和JDK 7

@RequestMapping(method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView updateNewPassword(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
    getCurrentRequestProperties().put(CurrentRequestProperties.IS_VALID_REQUEST, true);

    ModelAndView mav = new ModelAndView();
    String hString = request.getParameter("hString");
    String newPassword = request.getParameter("newPassword");
    String confirmPassword = request.getParameter("confirmPassword");

    if (StringUtils.isNotEmpty(newPassword) || StringUtils.isNotEmpty(confirmPassword))
    {
        UserSecurityQuestions qRecord = api.search.query(UserSecurityQuestions.class,
                api.search.property("hashString").eq(hString)).first();
        if (qRecord != null && !qRecord.isValidRequest())
        {
            mav.addObject("failedMessage", "forgot.url.expired");
        }
        else
        {
          // updates the password
         }
        } else {
        mav.addObject("hString", hString);
        mav.addObject("notimeout", true);
    }
    return mav;
}

最佳答案

需要再次访问hString,所以要将其添加到ModelAndView对象
  在返回语句之前的mav如下,但在第二次调用
  updateNewPassword()正在将hString设置为null。


当您将其添加到模型中时。只有在当前request有效之前(即),直到渲染视图之前,它才可用。

因此它返回了null。如果希望变量在进一步的请求中可用,则可以将其存储在session中。

09-25 20:40