我想在选择国家后显示各州。
JSP
<s:select label="COUNTRY" name="summaryData.addressCountry" id="addForm_countryCode"
list="loyaltyCountryMap" tabindex="" headerKey="US" headerValue="United States"
listKey="key" listValue="value.countryName"
onchange="getStateList('#addForm_countryCode')">
</s:select>
<s:select label="STATE" name="summaryData.addressCityCode" headerValue="-Select-" headerKey="-Select-" list="stateList" required="true" cssClass="storedPaymentInput_size1 required" id="stateList"/>
JAVASCRIPT:
function getStateList() {
var countryCode = $('#addForm_countryCode").val();
$.ajax({
url: 'ajaxStateList',
dataType: 'html',
data: { countryCode : countryCode},
success: function(data) {
$('#stateList').html( data );
}
});
}
struts.xml中
<action name="ajaxStateList" class="actions.AjaxStateList">
<result name="success"/>
</action>
行动类
private List<String> stateList;
private String countryCode;
public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
public List<String> getStateList() {
return stateList;
}
public void setStateList(List<String> stateList) {
this.stateList = stateList;
}
public String execute() {
LoyaltyStateProvinces.getInstance();
stateList = StateProvinces.getAllStateProvinceByCountryCode(countryCode);
for(StateProvince state: states){
stateList.add(state.getStateProvinceCode());
}
return SUCCESS;
}
如何使用AJAX + Struts2使其工作?
答案 0 :(得分:2)
见struts2-json-plugin。让你的动作返回一个json结果类型(通过这个插件)。您的动作类可以保持基本不变。
一旦您创建并测试了您的操作返回JSON(只需在浏览器中输入网址)。那你需要一些javaScript。我看到你正在使用jQuerys $ .ajax方法......我更喜欢$.getJSON,它做同样的事情,但假定数据采用json格式。
以下是我自己代码中的一些js:
function punch(){
$.getJSON("<s:url namespace="/timeclock/json" action="punch"/>",
{
badge: $("#input_badge").val()
},
function(data) {
$("#input_badge").val("");
$("#emp_name").text(data.name);
$("#emp_time").text(data.punch);
$("#notification").fadeIn("slow", hide);
});
return false;
}
你会注意到三个参数:Fist是调用的url,它总是最好用sturts2 url标签构建。其次是发送给动作的参数,在这种情况下,“badge”被设置为文本字段中具有id“input_badge”的内容,然后被发送到服务器。最后在回调成功时调用的函数,可以看到返回“name”,“punch”等参数。