重定向后如何保持请求参数?

我试图解决一个错误,当我发送一个空输入的窗体。重定向后如何保持请求参数?

这是我梅索德:

@RequestMapping(value = "/modifier.html", method = RequestMethod.POST) 

public String modifier(ModelMap map, @ModelAttribute("FormObject") FormObject formObject, BindingResult result, HttpServletRequest req) {

formObject.setModif(true);

String idParam = req.getParameter("idTypeOuverture");

if (result.hasErrors()) {

return "redirect:/gestion.html?section=Configuration&panel=4&ouvrir=modifier";

} else {

//Instructions

}

当有错误(空输入)控制器重定向到这个链接,告诉用户纠正错误。问题是,当我检查参数,在这里,他们看起来是正确的(ID,姓名...),但在以下方法ID变为零:为什么参数ID redericting后改变

@Override 

public ModelAndView dispatcher(HttpServletRequest request, HttpServletResponse response) throws RorException {

Map<String, Object> myModel = (Map<String, Object>) request.getAttribute(EnumParam.R_MY_MODEL.getKey());

Enumeration<?> keys = request.getParameterNames();

while (keys.hasMoreElements()) {

String paramName = (String) keys.nextElement();

String value = request.getParameter(paramName);

myModel.put(paramName, value);

}

GlobalSession globalSession = (GlobalSession) getApplicationContext().getBean(Utilities.GLOBALSESSION_BEAN_REF);

myModel.put("module", globalSession.getModule().getKeyMessage());

String section = request.getParameter("section");

// This instruction returns null

String idForm = request.getParameter("id");

id = Integer.parseInt(idForm);

// This instruction returns NumberFormatException

ObjectForm of = getForm(id);

// ...

}

好了,我不知道?你有什么主意吗?我尝试在第一个方法中重新设置参数,但仍然得到相同的NFE。

预先感谢您。

谢谢

回答:

请求参数只针对一个请求。 你做了一个重定向,这意味着你做了另一个新的“请求”。

你应该把它添加到重定向:

return "redirect:/gestion.html?section=Configuration&panel=4&ouvrir=modifier&idTypeOuverture="+idParam;

回答:

虽然以前的答案被接受,我加入了这个答案只为您的信息。

您还可以使用RedirectAttributes与不FlashAttributes也

发行重定向之前,POST方法应采取RedirectAttributes作为参数

这些属性将作为请求参数传递

看看我的代码示例并查看其是否有帮助

方法1:

@RequestMapping(value={"/requestInfo.htm},method=RequestMethod.POST) 

public String requestInfoPost1

(@ModelAttribute("requestInfoData") RequestInfoData requestInfoData,

BindingResult result,RedirectAttributes redirectAttributes,

SessionStatus status)

{

.......

redirectAttributes.addAttribute("name", requestInfoData.getName());

redirectAttributes.addAttribute("age", requestInfoData.getAge());

.....

return "redirect:requestInfoSuccessRedirect";

}

@RequestMapping("requestInfoSuccessRedirect")

public String requestInfoSuccessRedirect()

{

return "requestInfoSuccess";

}

WAY 2: 无论数据是在闪存属性添加将在会议上添加

这将是会议只能做到重定向是成功

在重定向,数据从会话中检索并添加到模型新的请求。

只有在重定向成功后,数据被删除

@RequestMapping(value={"/requestInfo.htm",method=RequestMethod.POST) 

public String requestInfoPost(@ModelAttribute("requestInfoData")

RequestInfoData requestInfoData,BindingResult result,

RedirectAttributes redirectAttributes,SessionStatus status)

{

.......

redirectAttributes.addFlashAttribute("requestInfoData",

requestInfoData);

........

return "redirect:requestInfoSuccessRedirect";

}

@RequestMapping("requestInfoSuccessRedirect")

public String requestInfoSuccessRedirect()

{

return "requestInfoSuccess";

}

以上是 重定向后如何保持请求参数? 的全部内容, 来源链接: utcz.com/qa/264511.html

回到顶部