Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Spring HashMap表单_Spring Mvc_Spring Roo - Fatal编程技术网

Spring mvc Spring HashMap表单

Spring mvc Spring HashMap表单,spring-mvc,spring-roo,Spring Mvc,Spring Roo,我正在使用SpringRoo创建一个用于生成文档的应用程序。首先,用户创建一个文档: public class Document { @NotNull private String titleDocument; @OneToMany(cascade = CascadeType.ALL, mappedBy = "relatedDocumentToThisDateField") private Set<DateField> dateFields = new HashS

我正在使用SpringRoo创建一个用于生成文档的应用程序。首先,用户创建一个文档:

public class Document {

  @NotNull
  private String titleDocument;

  @OneToMany(cascade = CascadeType.ALL, mappedBy = "relatedDocumentToThisDateField")
  private Set<DateField> dateFields = new HashSet<DateField>();

  @OneToMany(cascade = CascadeType.ALL, mappedBy = "relatedDocumentToThisRadioButton")
  private Set<RadioButtonField> radioButtonFields = new HashSet<RadioButtonField>();

  @OneToMany(cascade = CascadeType.ALL, mappedBy = "relatedDocumentToThisStringField")
  private Set<StringField> stringFields = new HashSet<StringField>();
}
创建带有字段的文档时,其他用户必须填写该文档。因为我不知道文档将包含多少字段,所以我需要创建一个HashMap表单()

我的HashMap是:

public class DynamicForm {  

  private Map<String, String> dynamicMap=new HashMap<String, String>();

  public Map<String, String> getDynamicMap() {
    return dynamicMap;
  }

  public void setDynamicMap(Map<String, String> dynamicMap) {
    this.dynamicMap = dynamicMap;
  }

}
这是一种观点:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<div
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields"
xmlns:form="http://www.springframework.org/tags/form"
xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">

<jsp:directive.page contentType="text/html;charset=UTF-8" />
<jsp:output omit-xml-declaration="yes" />

<form:form action="/DocumentGenerator/filldocuments/add" modelAttribute="dynamicForm" method="post">

        <c:forEach items="${dynamicForm.dynamicMap}" var="element">

                <input name="element['${element.key}']" value="${element.value}"/>

        </c:forEach>

        <input type="submit" value="Save" />

        </form:form>

</div>

我的问题是dynamicForm是空的。uiModel中还有另一个DynamicForm,也是空的(我当时处于调试模式)。用户填写的数据在哪里??我不知道怎么了

我的错,视图必须是这样的:

<c:forEach items="${dynamicForm.dynamicMap}" var="dynamicMap">

        <input name="dynamicMap['${dynamicMap.key}']" value="${dynamicMap.value}"/>

</c:forEach>

所以错误是使用变量元素

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<div
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields"
xmlns:form="http://www.springframework.org/tags/form"
xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">

<jsp:directive.page contentType="text/html;charset=UTF-8" />
<jsp:output omit-xml-declaration="yes" />

<form:form action="/DocumentGenerator/filldocuments/add" modelAttribute="dynamicForm" method="post">

        <c:forEach items="${dynamicForm.dynamicMap}" var="element">

                <input name="element['${element.key}']" value="${element.value}"/>

        </c:forEach>

        <input type="submit" value="Save" />

        </form:form>

</div>
@RequestMapping(value="/add", method = RequestMethod.POST, produces = "text/html")
public String update(@ModelAttribute(value="dynamicForm") DynamicForm dynamicForm, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {

    for( String key : dynamicForm.getDynamicMap().keySet() ) {
        System.out.println("key="+key);
    }


    return "redirect:/filldocuments";
}
<c:forEach items="${dynamicForm.dynamicMap}" var="dynamicMap">

        <input name="dynamicMap['${dynamicMap.key}']" value="${dynamicMap.value}"/>

</c:forEach>