Spring MVC表单:选择所选值?

nkhmeac6  于 2022-11-14  发布在  Spring
关注(0)|答案(7)|浏览(482)

有没有办法通过Spring MVC <form:options>在下拉列表中选择当前值?

wbgh16ku

wbgh16ku1#

不需要使用if else

示例:

  1. Student student = new Student();
  2. student.gender = "F";
  3. model.addObject("student", student);
  4. Map<String, String> genders = new LinkedHashMap<String, String>();
  5. genders.put("M", "Male");
  6. genders.put("F", "Female");
  7. model.addObject("genders", genders);

JSP代码
modelAttributecommandName可互换

  1. <c:url value="/Student/Edit" var="editstudenturl"/>
  2. <form:form method="post" action="${editstudenturl}" modelAttribute="student" class="form-horizontal">
  3. <form:select path="gender" class="form-control" id="gender" >
  4. <form:options items="${genders}" />
  5. </form:select>
  6. </form:form>
展开查看全部
oknwwptz

oknwwptz2#

根据绑定值将'selected'设置为适当值
http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.options

6gpjuf90

6gpjuf903#

这是我解决这个问题的方法。它很庞大,但很有效

性别:Java模型中的限定符

  1. // model.addAttribute("genders", genders);

× ×账号× ×:Spring表单的绑定模型属性

格式:消息:将m翻译为“Mees”(爱沙尼亚语)

  1. <form:select path="cfGender">
  2. <c:forEach var="item" items="${genders}">
  3. <c:choose>
  4. <c:when test="${account.getCfGender().getCfGender()==item.getCfGender()}">
  5. <form:option selected="true" value="${item.getCfGender()}">
  6. <fmt:message key="cf_gender.${item.getCfGender()}" />
  7. </form:option>
  8. </c:when>
  9. <c:otherwise>
  10. <form:option value="${item.getCfGender()}">
  11. <fmt:message key="cf_gender.${item.getCfGender()}" />
  12. </form:option>
  13. </c:otherwise>
  14. </c:choose>
  15. </c:forEach>
  16. </form:select>
展开查看全部
xkftehaa

xkftehaa4#

试试这个,对我有用

  1. <form:select path="size">
  2. <c:forEach items="${sizeList}" var="s" varStatus="status">
  3. <c:choose>
  4. <c:when test="${s eq 25}">
  5. <option value="${s}" selected="true">${s}</option>
  6. </c:when>
  7. <c:otherwise>
  8. <option value="${s}">${s}</option>
  9. </c:otherwise>
  10. </c:choose>
  11. </c:forEach>
  12. </form:select>
5uzkadbs

5uzkadbs5#

我也遇到过类似的问题,经过几天的努力,我在模型类中实现了hash和equal方法,解决了这个问题。问题是spring无法确定下拉列表中的某个项在哪里等于模型中的某个值。但是在模型对象中实现了hash和equals之后,一切都正常了。

  1. @Entity
  2. @Table(name = "BANKS")
  3. public class Bank implements java.io.Serializable {
  4. /**
  5. *
  6. */
  7. private static final long serialVersionUID = -8928809572705999915L;
  8. private Long id;
  9. private String bankCode;
  10. private String bankName;
  11. ...........
  12. @Override
  13. public int hashCode() {
  14. final int prime = 31;
  15. int result = 1;
  16. result = prime * result
  17. + ((bankCode == null) ? 0 : bankCode.hashCode());
  18. result = prime * result
  19. + ((bankName == null) ? 0 : bankName.hashCode());
  20. result = prime * result + ((id == null) ? 0 : id.hashCode());
  21. return result;
  22. }
  23. @Override
  24. public boolean equals(Object obj) {
  25. if (this == obj)
  26. return true;
  27. if (obj == null)
  28. return false;
  29. if (getClass() != obj.getClass())
  30. return false;
  31. Bank other = (Bank) obj;
  32. if (bankCode == null) {
  33. if (other.bankCode != null)
  34. return false;
  35. } else if (!bankCode.equals(other.bankCode))
  36. return false;
  37. if (bankName == null) {
  38. if (other.bankName != null)
  39. return false;
  40. } else if (!bankName.equals(other.bankName))
  41. return false;
  42. if (id == null) {
  43. if (other.id != null)
  44. return false;
  45. } else if (!id.equals(other.id))
  46. return false;
  47. return true;
  48. }

在我的视野中,我看到了这样的东西。

  1. <form:select path="bank" cssClass="form-control" required="true">
  2. <form:option value="">--Select--</form:option>
  3. <form:options items="${banks}" itemLabel="bankName"
  4. itemValue="bankCode" />
  5. </form:select>
展开查看全部
t8e9dugd

t8e9dugd6#

在将表单绑定到模型之前,您应该在jsp的控制器中将您希望选择的任何变量设置为所需的值。

  1. Form form = new Form();
  2. form.setFoo("bar");
  3. model.addAttribute("form", form);

在JSP中构建表单时,该表单变量将是选项列表中的默认选定值。

bxjv4tth

bxjv4tth7#

需要同时设置itemLabel和itemValue属性以预先选择值,例如:<form:options items="${subCategoryList}" itemLabel="name" itemValue="id"/> name和id是来自SubCategory对象的字段,subCategoryList是List<Subcategory>

相关问题