我在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下拉列表的正确方法吗?
答案 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
}