STRUTS2和AJAX - 选择国家,填写国家
问题描述:
我想在选择国家后显示国家。STRUTS2和AJAX - 选择国家,填写国家
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工作?
答
请参阅struts2-json-plugin。让你的动作返回一个json结果类型(通过这个插件)。你的行动班可以保持不变。
一旦您创建并测试了您的操作返回JSON(只需在浏览器中输入url)。那么你需要一些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;
}
你会发现三个参数:拳被分配为始终与sturts2 URL标记构建最佳呼叫的网址。其次是发送到动作的参数,在这种情况下,“徽章”被设置为在文本字段中以“input_badge”的id为始,然后发送到服务器。最后,当回调成功时调用的函数,您可以看到诸如“name”,“punch”等参数被返回。
+1仅仅用于使用jQuery而不使用那些可怜的ajax标记库。 – Quaternion 2012-04-30 08:37:08