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

标签 java spring spring-mvc

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

使用 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/

相关文章:

java - 不停止广播接收器中的当前歌曲

java - Spring Security自定义身份验证不起作用

java - Spring上下文编译时验证

java - 如何清除Redis Stream中的记录,只留下N条最新记录?

java - 如何使用安全 :authentication tag in Spring? 获取用户名

java - 调用 JTable 的 listselectionlistener

java - Spring 什么时候使用服务或组件?

java - 它必须是 StackoverflowError 或 OOME

java - Spring Integration DSL JMS 入站/出站网关

spring - 在 Spring 中使特定方法成为非事务性的