gpt4 book ai didi

java - Spring MVC 在页面中只提交渲染列表的一个元素

转载 作者:行者123 更新时间:2023-11-29 08:48:26 27 4
gpt4 key购买 nike

我一直在这里和在谷歌中寻找这个答案,但没有成功。我将解释我要寻找的内容,看看是否有人可以帮助我。

使用 Spring MCV,我将 A 对象列表“aList”渲染到我的 view.JSP 中。

    @RequestMapping(method = RequestMethod.GET)
public final ModelAndView getAList(){
ModelAndView mav = new ModelAndView("view");
List<A> aList = new ArrayList<>();
aList.add(new A("a1");
aList.add(new A("a2");
mav.addObject("aList", aList);
return mav;
}

A 的样子

  public class A{
@Getter
@Setter
private String value;
public A(String value){
this.value=value;
}
}

对于列表的每次迭代,我都会创建一个表单。表格看起来像

  <c:forEach var="a" items="${aList}"
varStatus="status">

<form:form id="A${a.id}"
method="post" action="save.do"
modelAttribute="a">

<input type="submit" value="Save"/>
</form:form>
</c:forEach>

所以在完成渲染后,我的列表中有很多形式的对象。您可以想象的每个表单都有他的提交按钮。现在我想做的是将其中一个表单发送到我的 Controller ,但没有成功,但不是我渲染的整个 A 列表,而是 A。所以我的 Controller 看起来像这样。

   RequestMapping(value = "/save", method = RequestMethod.POST)
public final ModelAndView save(@ModelAttribute("a") A a) {

但我收到“IllegalStateException:既不是 BindingResult 也不是 bean 名称的普通目标对象”,因为我的 modelAndView“aList”的渲染名称与“a”不同。

我想我理解的是像表单这样的 Spring MVC 组件不允许提交在渲染中使用的不同类。就算是render类的嵌套类,也有什么不好的。

我想避免再次发送 aList。

有什么想法吗?

问候。

最佳答案

与其尝试回传所选元素的全部内容,不如考虑回发所选元素的标识符。例如:

<form:form method="post" action="save.do">
<c:forEach items="${aList}"
var="element"
varStatus="status">

<input type="submit"
name="selectedElementId"
value="${element.id}"/>
</c:forEach>
</form:form>

关于java - Spring MVC 在页面中只提交渲染列表的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23953863/

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