首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STRUTS2和AJAX -选择国家,填充国家

STRUTS2和AJAX -选择国家,填充国家
EN

Stack Overflow用户
提问于 2012-04-27 21:02:04
回答 1查看 8K关注 0票数 2

我想在选择国家之后显示州。

JSP

代码语言:javascript
复制
       <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:

代码语言:javascript
复制
  function getStateList() {
        var countryCode = $('#addForm_countryCode").val(); 
        $.ajax({
            url: 'ajaxStateList',
            dataType: 'html',
            data: { countryCode : countryCode},
            success: function(data) {
                $('#stateList').html( data );
            }
        });
    }

STRUTS.XML

代码语言:javascript
复制
     <action name="ajaxStateList" class="actions.AjaxStateList">
       <result name="success"/>
 </action>

ACTION类

代码语言:javascript
复制
 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使其正常工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-30 16:33:54

参见struts2-json-plugin。让你的操作返回一个json结果类型(通过这个插件)。您的操作类可以在很大程度上保持不变。

一旦你创建并测试了它,你的操作就会返回JSON (只需在浏览器中输入url )。然后你需要一些javaScript。我看到你在使用jQuerys $.ajax方法...我更喜欢$.getJSON,它做同样的事情,但是假设数据是json格式的。

下面是我自己的代码中的一些js:

代码语言:javascript
复制
            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、back等参数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10351103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档