modelAttribute and path in a form when using a wrapper of a list of entities and c:foreach loop

huangapple go评论111阅读模式
英文:

modelAttribute and path in a form when using a wrapper of a list of entities and c:foreach loop

问题

我计划创建一个带有多个表单的视图,这些表单是由模型对象列表创建的。正如在这里的答案中所描述的 https://stackoverflow.com/a/32666512/5673289,我创建了一个列表的包装对象:

src/main/java/tk/trzczy/gallery/wrapperObject/GalleryForm.java

  1. package tk.trzczy.gallery.wrapperObject;
  2. import tk.trzczy.gallery.domain.Image;
  3. import java.util.List;
  4. public class GalleryForm {
  5. private List<Image> gallery;
  6. public GalleryForm(List<Image> gallery) {
  7. this.gallery = gallery;
  8. }
  9. public List<Image> getGallery() {
  10. return gallery;
  11. }
  12. public void setGallery(List<Image> gallery) {
  13. this.gallery = gallery;
  14. }
  15. }

并且以以下方式改进了控制器:

src/main/java/tk/trzczy/gallery/controllers/ImageController.java

  1. package tk.trzczy.gallery.controllers;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.ui.Model;
  5. import org.springframework.web.bind.annotation.*;
  6. import tk.trzczy.gallery.domain.Image;
  7. import tk.trzczy.gallery.services.ImageService;
  8. import tk.trzczy.gallery.services.ImageCategoryService;
  9. import javax.servlet.http.HttpSession;
  10. import javax.validation.Valid;
  11. import java.util.Date;
  12. import org.apache.logging.log4j.LogManager;
  13. import org.apache.logging.log4j.Logger;
  14. import tk.trzczy.gallery.wrapperObject.GalleryForm;
  15. @Controller
  16. public class ImageController {
  17. private static final Logger log = LogManager.getLogger(LoginController.class);
  18. @Autowired
  19. private ImageService imageService;
  20. //(...)
  21. @RequestMapping("/gallery/edit")
  22. public String getImagesToEdit(Model model) {
  23. model.addAttribute("images", new GalleryForm(imageService.getAllImages()));
  24. return "editGallery";
  25. }
  26. //(...)
  27. }

并且尝试在 JSP 文件中使用正确的 modelAttributepath 值,但未成功:

src/main/webapp/WEB-INF/views/editGalleryPage.jsp

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
  3. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
  4. <%@ taglib prefix="g" uri="/WEB-INF/date-format-tag.tld" %>
  5. <link rel="stylesheet" href="<spring:url value="/resource/css/editGallery.css" />"/>
  6. <div class="panel-body">
  7. <div class="row">
  8. <c:forEach items="${images.gallery}" var="image" varStatus="vs">
  9. <form:form modelAttribute="images" action="/images/edit/${image.id}" id="image" class="image"
  10. method="post">
  11. <form:input path="images.gallery[${vs.index}].url" id="image-${image.id}" style="width: 525px;"
  12. class=" form:input-large"
  13. name='url' value="${image.url}"/>
  14. <input type="submit">
  15. <p><form:errors path="url" cssClass="alert alert-danger"/></p>
  16. </form:form>
  17. </c:forEach>
  18. </div>
  19. </div>

错误是:

Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property 'images' of bean class [tk.trzczy.gallery.wrapperObject.GalleryForm]: Bean property 'images' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

这是一个 pom.xml 文件:

  1. <!-- (项目依赖) -->

如何修复这个问题?

英文:

I plan to create a view with multiple forms tha are created of a list of model objects. As it is desribed in an answer here https://stackoverflow.com/a/32666512/5673289 I created a wrapper object for the list:

src/main/java/tk/trzczy/gallery/wrapperObject/GalleryForm.java

  1. package tk.trzczy.gallery.wrapperObject;
  2. import tk.trzczy.gallery.domain.Image;
  3. import java.util.List;
  4. public class GalleryForm {
  5. private List&lt;Image&gt; gallery;
  6. public GalleryForm(List&lt;Image&gt; gallery) {
  7. this.gallery = gallery;
  8. }
  9. public List&lt;Image&gt; getGallery() {
  10. return gallery;
  11. }
  12. public void setGallery(List&lt;Image&gt; gallery) {
  13. this.gallery = gallery;
  14. }
  15. }

and improved a controller in this way:

src/main/java/tk/trzczy/gallery/controllers/ImageController.java

  1. package tk.trzczy.gallery.controllers;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.ui.Model;
  5. import org.springframework.validation.BindingResult;
  6. import org.springframework.web.bind.annotation.*;
  7. import tk.trzczy.gallery.domain.Image;
  8. import tk.trzczy.gallery.services.ImageService;
  9. import tk.trzczy.gallery.services.ImageCategoryService;
  10. import javax.servlet.http.HttpSession;
  11. import javax.validation.Valid;
  12. import java.util.Date;
  13. import org.apache.logging.log4j.LogManager;
  14. import org.apache.logging.log4j.Logger;
  15. import tk.trzczy.gallery.wrapperObject.GalleryForm;
  16. @Controller
  17. public class ImageController {
  18. private static final Logger log = LogManager.getLogger(LoginController.class);
  19. @Autowired
  20. private ImageService imageService;
  21. //(...)
  22. @RequestMapping(&quot;/gallery/edit&quot;)
  23. public String getImagesToEdit(Model model) {
  24. model.addAttribute(&quot;images&quot;, new GalleryForm(imageService.getAllImages()));
  25. return &quot;editGallery&quot;;
  26. }
  27. //(...)
  28. }

And tried to use proper modelAttribute and path values in jsp file, but did not succeed:

src/main/webapp/WEB-INF/views/editGalleryPage.jsp

  1. &lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %&gt;
  2. &lt;%@ taglib prefix=&quot;form&quot; uri=&quot;http://www.springframework.org/tags/form&quot; %&gt;
  3. &lt;%@ taglib prefix=&quot;spring&quot; uri=&quot;http://www.springframework.org/tags&quot; %&gt;
  4. &lt;%@ taglib prefix=&quot;g&quot; uri=&quot;/WEB-INF/date-format-tag.tld&quot; %&gt;
  5. &lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;spring:url value=&quot;/resource/css/editGallery.css&quot; /&gt;&quot;/&gt;
  6. &lt;div class=&quot;panel-body&quot;&gt;
  7. &lt;div class=&quot;row&quot;&gt;
  8. &lt;c:forEach items=&quot;${images.gallery}&quot; var=&quot;image&quot; varStatus=&quot;vs&quot;&gt;
  9. &lt;form:form modelAttribute=&quot;images&quot; action=&quot;/images/edit/${image.id}&quot; id=&quot;image&quot; class=&quot;image&quot;
  10. method=&quot;post&quot;&gt;
  11. &lt;form:input path=&quot;images.gallery[${vs.index}].url&quot; id=&quot;image-${image.id}&quot; style=&quot;width: 525px;&quot;
  12. class=&quot; form:input-large&quot;
  13. name=&#39;url&#39; value=&quot;${image.url}&quot;/&gt;
  14. &lt;input type=&quot;submit&quot;&gt;
  15. &lt;p&gt;&lt;form:errors path=&quot;url&quot; cssClass=&quot;alert alert-danger&quot;/&gt;&lt;/p&gt;
  16. &lt;/form:form&gt;
  17. &lt;/div&gt;
  18. &lt;/div&gt;

The error was

Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property &#39;images&#39; of bean class [tk.trzczy.gallery.wrapperObject.GalleryForm]: Bean property &#39;images&#39; is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

Here it is a pom.xml file:

  1. &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  2. xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  3. &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  4. &lt;groupId&gt;tk.trzczy&lt;/groupId&gt;
  5. &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt;
  6. &lt;version&gt;0.0.1&lt;/version&gt;
  7. &lt;packaging&gt;war&lt;/packaging&gt;
  8. &lt;properties&gt;
  9. &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
  10. &lt;aspect.version&gt;1.9.2&lt;/aspect.version&gt;
  11. &lt;jackson.version&gt;2.9.8&lt;/jackson.version&gt;
  12. &lt;hibernate.version&gt;5.4.2.Final&lt;/hibernate.version&gt;
  13. &lt;hibernate.validator.version&gt;5.2.1.Final&lt;/hibernate.validator.version&gt;
  14. &lt;c3p0.version&gt;0.9.5.2&lt;/c3p0.version&gt;
  15. &lt;/properties&gt;
  16. &lt;dependencies&gt;
  17. &lt;!-- servlets and jps --&gt;
  18. &lt;dependency&gt;
  19. &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
  20. &lt;artifactId&gt;jstl&lt;/artifactId&gt;
  21. &lt;version&gt;1.2&lt;/version&gt;
  22. &lt;/dependency&gt;
  23. &lt;dependency&gt;
  24. &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
  25. &lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;
  26. &lt;version&gt;4.0.1&lt;/version&gt;
  27. &lt;scope&gt;provided&lt;/scope&gt;
  28. &lt;/dependency&gt;
  29. &lt;dependency&gt;
  30. &lt;groupId&gt;org.apache.tiles&lt;/groupId&gt;
  31. &lt;artifactId&gt;tiles-extras&lt;/artifactId&gt;
  32. &lt;version&gt;3.0.8&lt;/version&gt;
  33. &lt;exclusions&gt;
  34. &lt;exclusion&gt;
  35. &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
  36. &lt;artifactId&gt;jcl-over-slf4j&lt;/artifactId&gt;
  37. &lt;/exclusion&gt;
  38. &lt;exclusion&gt;
  39. &lt;groupId&gt;jboss&lt;/groupId&gt;
  40. &lt;artifactId&gt;javassist&lt;/artifactId&gt;
  41. &lt;/exclusion&gt;
  42. &lt;/exclusions&gt;
  43. &lt;/dependency&gt;
  44. &lt;dependency&gt;
  45. &lt;groupId&gt;commons-fileupload&lt;/groupId&gt;
  46. &lt;artifactId&gt;commons-fileupload&lt;/artifactId&gt;
  47. &lt;version&gt;1.3.3&lt;/version&gt;
  48. &lt;/dependency&gt;
  49. &lt;dependency&gt;
  50. &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
  51. &lt;artifactId&gt;commons-io&lt;/artifactId&gt;
  52. &lt;version&gt;1.3.2&lt;/version&gt;
  53. &lt;/dependency&gt;
  54. &lt;!--hibernate--&gt;
  55. &lt;dependency&gt;
  56. &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
  57. &lt;artifactId&gt;hibernate-core&lt;/artifactId&gt;
  58. &lt;version&gt;${hibernate.version}&lt;/version&gt;
  59. &lt;exclusions&gt;
  60. &lt;exclusion&gt;
  61. &lt;groupId&gt;org.javassist&lt;/groupId&gt;
  62. &lt;artifactId&gt;javassist&lt;/artifactId&gt;
  63. &lt;/exclusion&gt;
  64. &lt;/exclusions&gt;
  65. &lt;/dependency&gt;
  66. &lt;dependency&gt;
  67. &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
  68. &lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt;
  69. &lt;version&gt;${hibernate.version}&lt;/version&gt;
  70. &lt;/dependency&gt;
  71. &lt;!-- Hibernate-C3P0 Integration --&gt;
  72. &lt;dependency&gt;
  73. &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
  74. &lt;artifactId&gt;hibernate-c3p0&lt;/artifactId&gt;
  75. &lt;version&gt;${hibernate.version}&lt;/version&gt;
  76. &lt;/dependency&gt;
  77. &lt;!-- c3p0 --&gt;
  78. &lt;dependency&gt;
  79. &lt;groupId&gt;com.mchange&lt;/groupId&gt;
  80. &lt;artifactId&gt;c3p0&lt;/artifactId&gt;
  81. &lt;version&gt;${c3p0.version}&lt;/version&gt;
  82. &lt;/dependency&gt;
  83. &lt;dependency&gt;
  84. &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
  85. &lt;artifactId&gt;hibernate-validator&lt;/artifactId&gt;
  86. &lt;version&gt;${hibernate.validator.version}&lt;/version&gt;
  87. &lt;/dependency&gt;
  88. &lt;dependency&gt;
  89. &lt;groupId&gt;mysql&lt;/groupId&gt;
  90. &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
  91. &lt;version&gt;5.1.34&lt;/version&gt;
  92. &lt;/dependency&gt;
  93. &lt;!-- for rest services --&gt;
  94. &lt;dependency&gt;
  95. &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;
  96. &lt;artifactId&gt;jackson-databind&lt;/artifactId&gt;
  97. &lt;version&gt;${jackson.version}&lt;/version&gt;
  98. &lt;/dependency&gt;
  99. &lt;dependency&gt;
  100. &lt;groupId&gt;javax.servlet.jsp&lt;/groupId&gt;
  101. &lt;artifactId&gt;javax.servlet.jsp-api&lt;/artifactId&gt;
  102. &lt;version&gt;2.3.3&lt;/version&gt;
  103. &lt;/dependency&gt;
  104. &lt;!-- For Aop --&gt;
  105. &lt;dependency&gt;
  106. &lt;groupId&gt;org.aspectj&lt;/groupId&gt;
  107. &lt;artifactId&gt;aspectjrt&lt;/artifactId&gt;
  108. &lt;version&gt;${aspect.version}&lt;/version&gt;
  109. &lt;/dependency&gt;
  110. &lt;dependency&gt;
  111. &lt;groupId&gt;org.aspectj&lt;/groupId&gt;
  112. &lt;artifactId&gt;aspectjweaver&lt;/artifactId&gt;
  113. &lt;version&gt;${aspect.version}&lt;/version&gt;
  114. &lt;/dependency&gt;
  115. &lt;!-- To Send Email --&gt;
  116. &lt;dependency&gt;
  117. &lt;groupId&gt;com.sun.mail&lt;/groupId&gt;
  118. &lt;artifactId&gt;javax.mail&lt;/artifactId&gt;
  119. &lt;version&gt;1.5.4&lt;/version&gt;
  120. &lt;/dependency&gt;
  121. &lt;dependency&gt;
  122. &lt;groupId&gt;org.springframework.security&lt;/groupId&gt;
  123. &lt;artifactId&gt;spring-security-core&lt;/artifactId&gt;
  124. &lt;version&gt;5.2.0.RELEASE&lt;/version&gt;
  125. &lt;/dependency&gt;
  126. &lt;dependency&gt;
  127. &lt;groupId&gt;org.springframework&lt;/groupId&gt;
  128. &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt;
  129. &lt;version&gt;5.2.0.RELEASE&lt;/version&gt;
  130. &lt;/dependency&gt;
  131. &lt;dependency&gt;
  132. &lt;groupId&gt;org.springframework&lt;/groupId&gt;
  133. &lt;artifactId&gt;spring-tx&lt;/artifactId&gt;
  134. &lt;version&gt;5.2.0.RELEASE&lt;/version&gt;
  135. &lt;/dependency&gt;
  136. &lt;dependency&gt;
  137. &lt;groupId&gt;org.springframework&lt;/groupId&gt;
  138. &lt;artifactId&gt;spring-orm&lt;/artifactId&gt;
  139. &lt;version&gt;5.2.0.RELEASE&lt;/version&gt;
  140. &lt;/dependency&gt;
  141. &lt;dependency&gt;
  142. &lt;groupId&gt;org.springframework.security&lt;/groupId&gt;
  143. &lt;artifactId&gt;spring-security-web&lt;/artifactId&gt;
  144. &lt;version&gt;5.2.0.RELEASE&lt;/version&gt;
  145. &lt;/dependency&gt;
  146. &lt;dependency&gt;
  147. &lt;groupId&gt;org.springframework.security&lt;/groupId&gt;
  148. &lt;artifactId&gt;spring-security-config&lt;/artifactId&gt;
  149. &lt;version&gt;5.2.0.RELEASE&lt;/version&gt;
  150. &lt;/dependency&gt;
  151. &lt;!--logging--&gt;
  152. &lt;dependency&gt;
  153. &lt;groupId&gt;org.apache.logging.log4j&lt;/groupId&gt;
  154. &lt;artifactId&gt;log4j-core&lt;/artifactId&gt;
  155. &lt;version&gt;2.8.2&lt;/version&gt;
  156. &lt;/dependency&gt;
  157. &lt;dependency&gt;
  158. &lt;groupId&gt;org.apache.logging.log4j&lt;/groupId&gt;
  159. &lt;artifactId&gt;log4j-api&lt;/artifactId&gt;
  160. &lt;version&gt;2.8.2&lt;/version&gt;
  161. &lt;/dependency&gt;
  162. &lt;!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web --&gt;
  163. &lt;dependency&gt;
  164. &lt;groupId&gt;org.apache.logging.log4j&lt;/groupId&gt;
  165. &lt;artifactId&gt;log4j-web&lt;/artifactId&gt;
  166. &lt;version&gt;2.13.3&lt;/version&gt;
  167. &lt;/dependency&gt;
  168. &lt;dependency&gt;
  169. &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
  170. &lt;artifactId&gt;slf4j-simple&lt;/artifactId&gt;
  171. &lt;version&gt;1.7.30&lt;/version&gt;
  172. &lt;/dependency&gt;
  173. &lt;!-- PostgreSQL --&gt;
  174. &lt;dependency&gt;
  175. &lt;groupId&gt;org.postgresql&lt;/groupId&gt;
  176. &lt;artifactId&gt;postgresql&lt;/artifactId&gt;
  177. &lt;version&gt;42.2.16&lt;/version&gt;
  178. &lt;/dependency&gt;
  179. &lt;dependency&gt;
  180. &lt;groupId&gt;org.springframework&lt;/groupId&gt;
  181. &lt;artifactId&gt;spring-context-support&lt;/artifactId&gt;
  182. &lt;version&gt;5.1.3.RELEASE&lt;/version&gt;
  183. &lt;/dependency&gt;
  184. &lt;!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-taglibs --&gt;
  185. &lt;dependency&gt;
  186. &lt;groupId&gt;org.springframework.security&lt;/groupId&gt;
  187. &lt;artifactId&gt;spring-security-taglibs&lt;/artifactId&gt;
  188. &lt;version&gt;5.1.2.RELEASE&lt;/version&gt;
  189. &lt;/dependency&gt;
  190. &lt;dependency&gt;
  191. &lt;groupId&gt;org.springframework&lt;/groupId&gt;
  192. &lt;artifactId&gt;spring-context&lt;/artifactId&gt;
  193. &lt;version&gt;5.2.7.RELEASE&lt;/version&gt;
  194. &lt;/dependency&gt;
  195. &lt;!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-war-plugin --&gt;
  196. &lt;dependency&gt;
  197. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  198. &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
  199. &lt;version&gt;3.2.2&lt;/version&gt;
  200. &lt;/dependency&gt;
  201. &lt;!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin --&gt;
  202. &lt;dependency&gt;
  203. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  204. &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
  205. &lt;version&gt;2.22.1&lt;/version&gt;
  206. &lt;/dependency&gt;
  207. &lt;dependency&gt;
  208. &lt;groupId&gt;org.springframework&lt;/groupId&gt;
  209. &lt;artifactId&gt;spring-web&lt;/artifactId&gt;
  210. &lt;version&gt;5.2.0.RELEASE&lt;/version&gt;
  211. &lt;/dependency&gt;
  212. &lt;!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-rest-core --&gt;
  213. &lt;dependency&gt;
  214. &lt;groupId&gt;org.springframework.data&lt;/groupId&gt;
  215. &lt;artifactId&gt;spring-data-rest-core&lt;/artifactId&gt;
  216. &lt;version&gt;3.3.4.RELEASE&lt;/version&gt;
  217. &lt;/dependency&gt;
  218. &lt;/dependencies&gt;
  219. &lt;build&gt;
  220. &lt;!-- To define the plugin version in your parent POM --&gt;
  221. &lt;pluginManagement&gt;
  222. &lt;plugins&gt;
  223. &lt;plugin&gt;
  224. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  225. &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
  226. &lt;version&gt;2.22.1&lt;/version&gt;
  227. &lt;/plugin&gt;
  228. &lt;/plugins&gt;
  229. &lt;/pluginManagement&gt;
  230. &lt;plugins&gt;
  231. &lt;!-- To use the plugin goals in your POM or parent POM --&gt;
  232. &lt;plugin&gt;
  233. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  234. &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
  235. &lt;configuration&gt;
  236. &lt;source&gt;1.8&lt;/source&gt;
  237. &lt;target&gt;1.8&lt;/target&gt;
  238. &lt;/configuration&gt;
  239. &lt;/plugin&gt;
  240. &lt;plugin&gt;
  241. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  242. &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
  243. &lt;/plugin&gt;
  244. &lt;/plugins&gt;
  245. &lt;/build&gt;
  246. &lt;/project&gt;

How to fix it?

答案1

得分: 1

这应该可以工作

  1. <div class="panel-body">
  2. <div class="row">
  3. <c:forEach items="${images.gallery}" var="image" varStatus="vs">
  4. <form:form modelAttribute="images" action="/images/edit/${image.id}" id="image" class="image" method="post">
  5. <form:input path="gallery[${vs.index}].url" id="image-${image.id}" style="width: 525px;"
  6. class="form:input-large"
  7. name='url' value="${image.url}"/>
  8. <input type="submit">
  9. <p><form:errors path="gallery[${vs.index}].url" cssClass="alert alert-danger"/></p>
  10. </form:form>
  11. </c:forEach>
  12. </div>
  13. </div>

问题在于form:input指定的路径以images.开头,但由于modelAttributeimages,它需要以gallery开头。

英文:

this should work

  1. &lt;div class=&quot;panel-body&quot;&gt;
  2. &lt;div class=&quot;row&quot;&gt;
  3. &lt;c:forEach items=&quot;${images.gallery}&quot; var=&quot;image&quot; varStatus=&quot;vs&quot;&gt;
  4. &lt;form:form modelAttribute=&quot;images&quot; action=&quot;/images/edit/${image.id}&quot; id=&quot;image&quot; class=&quot;image&quot; method=&quot;post&quot;&gt;
  5. &lt;form:input path=&quot;gallery[${vs.index}].url&quot; id=&quot;image-${image.id}&quot; style=&quot;width: 525px;&quot;
  6. class=&quot; form:input-large&quot;
  7. name=&#39;url&#39; value=&quot;${image.url}&quot;/&gt;
  8. &lt;input type=&quot;submit&quot;&gt;
  9. &lt;p&gt;&lt;form:errors path=&quot;gallery[${vs.index}].url&quot; cssClass=&quot;alert alert-danger&quot;/&gt;&lt;/p&gt;
  10. &lt;/form:form&gt;
  11. &lt;/c:forEach&gt;
  12. &lt;/div&gt;
  13. &lt;/div&gt;

the problem was the path specified for form:input which started with images. but since the modeAttribute is images it needed to start with gallery.

huangapple
  • 本文由 发表于 2020年10月16日 06:18:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/64380419.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定