首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jQuery、ajax、struts2在第一个下拉选择的基础上填充第二个下拉列表

使用jQuery、ajax、struts2在第一个下拉选择的基础上填充第二个下拉列表
EN

Stack Overflow用户
提问于 2011-03-28 20:20:41
回答 2查看 16.9K关注 0票数 2

编辑还有其他任何方法来填充第二个下拉列表,作为第一个下拉选择jquery。如果有人有链接,请张贴任何链接。

我已经更新了基于第一个下拉列表选择的第二个下拉列表。我正在使用jQuery和Struts2。我想使用jQuery ajax更新第二个下拉列表。谁能帮我把密码。我尝试使用下面的方法,但不知怎的,我无法将参数传递给Action类。提前谢谢你。

http://www.joe-stevens.com/2010/02/23/populate-a-select-dropdown-list-using-jquery-and-ajax/

编辑:Climbage一样说我正在用代码更新我所拥有的任何东西。

casetermcodes是行动,caseSelect是第一下拉,termSelect是第二。selCaseDropDown是隐藏变量,我希望在Action中获取第一个下拉列表的选定值,其中包含getter和setter方法。我首先坚持将选定的值发送到action类。在这一点上,我没有做任何进一步的工作。

代码语言:javascript
运行
复制
    $("#caseSelect").change(
        function(){
        $("#result").html('Retrieving ...');
        var selCase = $("#caseSelect").val();
        $.ajax({
            type: "POST",
            url: "/dwdst/casetermcodes",
            data: {selCaseDropDown: selCase},
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                $("#termSelect").get(0).options.length = 0;
                $("#termSelect").get(0).options[0] = new Option("Term Codes", "-1");   

                $.each(msg.d, function(index, item) {
                    $("#termSelect").get(0).options[$("#termSelect").get(0).options.length] = new Option(item.value, item.key);
                });
            },
            error: function() {
                alert("Failed to load Term Codes");
                $("#result").hide();
            }
        });
    });

行动课:

代码语言:javascript
运行
复制
public String execute(){
    logger.info("selected value >>"+selCaseDropDown);
    return SUCCESS;
}

public String getSelCaseDropDown(){
    return selCaseDropDown;
}

public void setSelCaseDropDown(String selCaseDropDown){
    this.selCaseDropDown = selCaseDropDown;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-31 14:57:44

我已经通过创建另一个简短的JSP来解决这个问题,它只作为html代码下拉(第二个下拉),在我的操作中,结果将是这个简短的页面。

当第一个页面选择call操作时,使用下面的代码并覆盖jsp中已经显示的下拉操作,而第二个简短的下拉操作仅使用jsp。

getSecondSelect是我所调用的动作,其结果就是那个短的jsp。

tercodeResult是div标记,它被替换为新的下拉列表。

selId是从第一个下拉列表中选择的值。

代码语言:javascript
运行
复制
        $.ajax({
            type: "GET",
            url: "getSecondSelect",
            data:"selId=" + selCase,
            dataType: "text/html;charset=utf-8",
            success: function(msg) {
                $("#tercodeResult").html(msg);
            }
        });
票数 3
EN

Stack Overflow用户

发布于 2013-05-30 08:14:04

试试这个,将帮助您在Struts2.0.14中使用jsonplugin-0.32.jar。

struts.xml:

代码语言:javascript
运行
复制
<struts>
     <package name="example" extends="json-default">
        <action name="HelloWorld" class="example.HelloWorld"  >
            <result type="json" />
        </action>
              <action name="HelloWorld1" class="example.HelloWorld"  >
            <result name="success" >example/HelloWorld.jsp</result>
        </action>
    </package>
</struts>

动作类Helloworld.java:

代码语言:javascript
运行
复制
package prabhakar;

import glb.DB;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Prabhakar
 */
public class HelloWorld {

    private List<StateMaster> stateList = new ArrayList<StateMaster>();
    private List<RegnMaster> regnList = new ArrayList<StateMaster>();
    private Integer stateId;

    public Integer getStateId() {
        return this.stateId;
    }

    public void setStateId(Integer stateId) {
        this.stateId = stateId;
    }

    public List<StateMaster> getStateList() {
        return stateList;
    }

    public void setStateList(List<StateMaster> stateList) {
        this.stateList = stateList;
    }

    public void setRegnList(List<RegnMaster> regnList) {
        this.regnList = regnList;
    }

    public List<RegnMaster> getRegnList() {
        return regnList;
    }

    public String execute() throws Exception {

        stateList = DB.getStateData()//
            if (stateId != null) {
            regnList = DB.getRegnByStateId(stateId);
        }

        //setMessage(getText(MESSAGE));
        return "success";
    }
    /**
     * Provide default valuie for Message property.
     */
}

您可以直接调用HelloWorld.action来查看JSON数据,或者可以将JSON数据绑定到下面的表单元素。

JSP页面HelloWorld.jsp:

代码语言:javascript
运行
复制
  /*
     Prabhakar
  */

<%@ page contentType="text/html; charset=UTF-8" %>    
<%@ taglib prefix="s" uri="/struts-tags" %>

<script>
    <%@include file="../js/jquery-1.7.1.min.js"%>
</script>

<html>

    <!-- JavaScript Plugins -->
    <script>
        function getLoad(){

            var stateId = $('#state').val();

            $.getJSON('HelloWorld.action', {'stateId': stateId},
            function(data) {

                var divisionList = (data.regnList);

                var options = $("#regn");
                options.find('option')
                .remove()
                .end();
                options.append($("<option />").val("-1").text("--Select--"));
                $.each(divisionList, function() {

                    options.append($("<option />").val(this.regnId).text(this.regnName));
                });
            }
        );}
    </script>

    <!-- jQuery-UI Dependent Scripts -->

    <body>
        State List <s:select name="stateId" list="stateList" id="state" listKey="stateId" onchange="getLoad()" listValue="stateName" headerKey="0" headerValue="--select--" />
    Regn List <s:select name="regnId"  list="regnList" listKey="regnId" id="regn" listValue="regnName" headerKey="0" headerValue="--select--" />
</body>
</html>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5464629

复制
相关文章

相似问题

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