根据 java spring 注解中 dropdown1 的选择填充 dropdown2
Populate dropdown2 based on the selection of dropdown1 in java spring annotation
Java 代码包含以下内容:
@ModelAttribute("countries")
public List<Country> initializeCountries() {
List <Country> countries = countryService.findAllCountrys();
return countries;
}
我已经使用以下代码成功填充国家/地区:
<form:select path="country" id="country">
<form:option value="">Select Country</form:option>
<form:options items="${countries}" itemValue="countryCode" itemLabel
= "countryName" />
</form:select>
<form:errors path="country" cssClass="error"/>
我有以下代码,它根据国家/地区代码获取州:
List <State> states = countryService.findAllStatesOfCountry(countryCode);
我应该如何编写 java 代码和 jsp 代码来根据选择的国家/地区填充州下拉列表。在 spring 注释中不使用 Ajax/javascript 有没有其他方法?试图找到这个选项。
如果不是请提及完整的细节,因为我在 Ajax 上尽力了。我是 Ajax 的新手,因此请分享要加载到 jsp 文件中的 maven 依赖项、js 和 css 文件。
不使用ajax也可以实现(虽然这里首选ajax/javascript)。
<script language="javascript">
function getStates(selectedCountry)
{
window.location.href='/getStates?country='+selectedCountry;
}
</script>
<form:select path="country" id="country">
<form:option value="">Select Country</form:option>
<form:options items="${countries}" itemValue="countryCode" itemLabel
= "countryName" onchange="javascript:getStates(this.value)"/>
</form:select>
<form:select path="state" id="state">
<form:option value="">Select State</form:option>
<c:if test="${not empty states}" >
<form:options items="${states}" itemValue="stateCode" itemLabel
= "stateName"/>
</c:if>
</form:select>
onchange
属性添加到 javascript 函数调用。它会
获取选定的国家/地区值并将其传递给控制器
请求参数为 country
。因此,在更改国家/地区时,将调用服务器以获取给定国家/地区的州,并刷新页面。
- 添加了一个新的状态下拉列表
c:if
,以便仅当存在属性 states
时才填充状态下拉列表
在请求中。
在控制器端,您将编写如下内容
@RequestMapping("/getStates")
public ModelAndView getStates(@RequestParam("country")String countryCode){
ModelAndView mv = new ModelAndView("yourCurrentView");
List<States> states = stateService.findAllStatesOfCountry(countryCode);
mv.add("states",states);
//to make sure countries drop down also has data
mv.add("countries",countries);
}
Java 代码包含以下内容:
@ModelAttribute("countries")
public List<Country> initializeCountries() {
List <Country> countries = countryService.findAllCountrys();
return countries;
}
我已经使用以下代码成功填充国家/地区:
<form:select path="country" id="country">
<form:option value="">Select Country</form:option>
<form:options items="${countries}" itemValue="countryCode" itemLabel
= "countryName" />
</form:select>
<form:errors path="country" cssClass="error"/>
我有以下代码,它根据国家/地区代码获取州:
List <State> states = countryService.findAllStatesOfCountry(countryCode);
我应该如何编写 java 代码和 jsp 代码来根据选择的国家/地区填充州下拉列表。在 spring 注释中不使用 Ajax/javascript 有没有其他方法?试图找到这个选项。
如果不是请提及完整的细节,因为我在 Ajax 上尽力了。我是 Ajax 的新手,因此请分享要加载到 jsp 文件中的 maven 依赖项、js 和 css 文件。
不使用ajax也可以实现(虽然这里首选ajax/javascript)。
<script language="javascript">
function getStates(selectedCountry)
{
window.location.href='/getStates?country='+selectedCountry;
}
</script>
<form:select path="country" id="country">
<form:option value="">Select Country</form:option>
<form:options items="${countries}" itemValue="countryCode" itemLabel
= "countryName" onchange="javascript:getStates(this.value)"/>
</form:select>
<form:select path="state" id="state">
<form:option value="">Select State</form:option>
<c:if test="${not empty states}" >
<form:options items="${states}" itemValue="stateCode" itemLabel
= "stateName"/>
</c:if>
</form:select>
onchange
属性添加到 javascript 函数调用。它会 获取选定的国家/地区值并将其传递给控制器 请求参数为country
。因此,在更改国家/地区时,将调用服务器以获取给定国家/地区的州,并刷新页面。- 添加了一个新的状态下拉列表
c:if
,以便仅当存在属性states
时才填充状态下拉列表 在请求中。
在控制器端,您将编写如下内容
@RequestMapping("/getStates")
public ModelAndView getStates(@RequestParam("country")String countryCode){
ModelAndView mv = new ModelAndView("yourCurrentView");
List<States> states = stateService.findAllStatesOfCountry(countryCode);
mv.add("states",states);
//to make sure countries drop down also has data
mv.add("countries",countries);
}