gpt4 book ai didi

java - ModelAndView中重新发送请求参数

转载 作者:行者123 更新时间:2023-12-02 11:51:42 25 4
gpt4 key购买 nike

我有一个读取 URL 参数的 thymeleaf 模板:

http://xxxx:8080/department?action=edit

这样:

<input type="text" th:placeholder="#{department.id}" class="form-control" th:field="*{id}" th:readonly="${param.action[0] == 'edit'}">

基本上,如果 URL 中包含 action=edit,您就可以进行编辑。这工作正常,但是当我处理 POST 方法时,出现错误时 modelAndView 会单独重定向到/departent 而不带参数:

@RequestMapping(value = "/department", method = RequestMethod.POST)
public ModelAndView department(HttpServletRequest request, @Valid Department department,
BindingResult bindingResult) {
ModelAndView modelAndView = new ModelAndView();
if (bindingResult.hasErrors()) {
// data with errores, try again
modelAndView.setViewName("department");
} else {
// all ok. Save and continue
departmentService.updateDepartment(department);
modelAndView.setViewName("redirect:departments");
}
return modelAndView;
}

当页面重新加载时,我收到以下错误消息:

由 org.thymeleaf.exceptions.TemplateProcessingException 引起:评估 SpringEL 表达式时出现异常:“param.action[0] == 'edit'”(模板:“department” - 第 24 行,第 103 栏)

原因是新的 URL 是:

http://xxxx:8080/department

我认为需要使用 URL 参数是因为该链接是由 HREF 链接生成的。

我已经尝试过:

modelAndView.getModelMap().put("action", "edit");

但这行不通。

最佳答案

我会通过将 param.action[0] == 'edit' 设为变量并将其添加到模型中来简化此操作。喜欢:

model.addAttribute("isReadOnly", someVariableHereThatMakesItReadOnly);

th:readonly="${isReadOnly}" 在您的表单中。

这使您的 View 不那么复杂,并允许您在服务器端对 isReadOnly 的值进行单元测试。然后你可以这样做:

@PostMapping("/department")
public String postDepartment(@Valid Department department,
BindingResult result) {
if (result.hasErrors()) {
//add error information here
model.addAttribute("isReadOnly", true);
return "department"
}
departmentService.updateDepartment(department);
return "redirect:/departments";
}

您可能有多种方法可以做到这一点。这只是一种方法。

您也可以在 post 方法中return "redirect:/department?action=edit",但随后您需要对如何显示任何错误消息发挥创意。

关于java - ModelAndView中重新发送请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com