Java Spring下拉列表填充

时间:2015-03-14 16:37:24

标签: java spring jsp

我在spring mvc工作,我正在做一些jsp,在一个页面中显示多个下拉列表....

我看到了一个示例,通过使用以下示例显示数据库中的下拉列表。

    <%@ page import="java.util.*" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <jsp:useBean id="state" scope="session" class="src.StateDAO"/>

    <html>
      <head>
      <title></title>
      </head>
      <body>
        <form id="test" method="POST" action="">
          <input name="state" type="radio" value="Australia" id="state-aus">Australia
          <input name="state" type="radio" value="NewZealand" id="state-new">NewZealand
          <input name="state" type="radio" value="India" id="state-oth"  >India
          <Select name="othStates" size="1" id="oth-states">
          <c:forEach items="${state.stateList}" var="st">
                <option value="1"><c:out value="${st.name}"/></option>
          </c:forEach>
          </select>
          <br>
          <input type="Submit" name="cmdSub" value="SUBMIT">
          <input type="Reset" name="cmdReset" value="RESET">
        </form>
      </body>
    </html>

这是使用Spring mvc来获取jsp下拉列表的正确方法吗?

1 个答案:

答案 0 :(得分:5)

我认为更好的选择是使用jsp的spring标签

    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
...
    <form:select path="country">
        <form:option value="NONE" label="--- Select ---" />
        <form:options items="${countryList}" />
    </form:select>

请参阅此处的完整示例:http://www.mkyong.com/spring-mvc/spring-mvc-dropdown-box-example/

修改

$('#stateSelect').change(function() {
    $.ajax({
        type:"GET",
        url : "/getCitiesForState",
        data : { state: $('#stateSelect').val()},
        success : function(data) {
            $('#citySelect').empty(); //remove all child nodes
            for(var i = 0; i < data.length; i++){
                var newOption = $('<option value=data[i].value>data[i].text</option>');
                $('#citySelect').append(newOption);
            }   
        },
        error: function() {
            alert('Error occured');
        }
    });
});

在服务器端,您需要一个响应url的端点(示例中为/ getCitiesForState),并返回具有值和文本属性的对象列表。

编辑(添加controlelr):

@Controller
public class HelloController{

   @RequestMapping("/getCitiesForState")
   @ResponseBody
   public List<City> printHello(@RequestParam long state) {
      List<City> cities = //get from the some repository by state
      return cities;
   }

}

public class City{
   private String value;
   private String text;
   //getters setters
}