JSP两级级联,在提交表单后,
怎样让第二级根据事先选定的第一级初始化

解决方案 »

  1.   

    这种问题现在典型的解决办法就是ajax,但是写js也能实现!
      

  2.   

    把第一级的参数传到后台,在转向JSP的时候把参数传过来调用dwr的方法查询出二级
      

  3.   

    思路就是javascript代码自己写吧!
      

  4.   

    最优解ajax,可以试试jQuery来实现更快捷一点点。
      

  5.   

    Ajax javascript <script type="text/javascript">
    function ajaxFunctionType(){
    var xmlHttp;
    try{
    xmlHttp = new XMLHttpRequest();

    }catch(e){
    try{
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
    try{
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }catch(e){
    alert("not support");
    return false;
    }
    }
    }

    xmlHttp.onreadystatechange = function(){
    if(xmlHttp.readyState == 4){
    if(xmlHttp.status == 200){
    var xmlDoc = xmlHttp.responseXML;
    var ops = document.post.type;  //删除之前残留的类型
    while(ops.length>0){
    ops.remove(0);
    }
    for(var i = 0 ; i< xmlDoc.getElementsByTagName("name").length; i++){ //循环添加类型
    var op = document.createElement('option');
    op.text = xmlDoc.getElementsByTagName("name")[i].firstChild.nodeValue;
    var se=document.post.type;
       try
        {
         se.add(op,null); // standards compliant
        }
       catch(ex)
        {
         se.add(op); // IE only
        }
    }

    //document.user.userName.value = xmlDoc.getElementsByTagName("userName")[0].firstChild.nodeValue;

    }else{
    alert("error:" + xmlHttp.status);
    }

    }

    var modelSe = document.post.model;
    //proSe.options[proSe.selectedIndex].text--需要经过转码,不然在服务器端不管怎么设置都会出现乱码
    xmlHttp.open("POST","PostAction!getTypeByModel?mdId="+encodeURI(modelSe.options[modelSe.selectedIndex].value),true);
    xmlHttp.send(null);
    }
    </script><form name="post"> 
         帖模块: 
         <!--  
         <select id="model" onchange="ajaxFunctionType()">
         <s:iterator >
        
         </s:iterator>
         </select>
         -->
         <s:select id="model" list="postModelMap"  onchange="ajaxFunctionType()">
        
         </s:select>
         <br /><br />
         帖子类型:
         <select id="type">
        
         </select>
        </form>前两天刚刚帮朋友解决的
      

  6.   

    你的意思就还比是在修改一个什么信息时,显示默认当时选中的级联内容,这样的话还是同样的,代码如下:
    <select id="bpid" name="bpid">
    <option value="0">==选择栏目==</option>
    <%for(int i = 0; i < partJsonArray.length(); i++){ %>
    <%
    int bpid = Integer.parseInt(partJsonArray.getJSONObject(i).getString("bpid"));
    String partname = (String) partJsonArray.getJSONObject(i).getString("partname");
    %>
    <option value="<%=bpid %>" <%if(_bpid == bpid){out.println("selected");} %>><%=partname %></option>
    <%} %>
    </select>
    <select id="btid" name="btid">
    <%for(int n = 0; n < _typeJsonArray.length(); n++){ %>
    <%
    int _btid = Integer.parseInt(_typeJsonArray.getJSONObject(n).getString("btid"));
    String _typename = (String) _typeJsonArray.getJSONObject(n).getString("typename");
    %>
    <option value="<%=_btid %>" <%if(btid == _btid){out.println("selected");} %>><%=_typename %></option>
    <%} %>
    </select>// 栏目 - 类型级联操作
    $('#bpid').change(function(){
    var option1 = "<option value='";
    var option2 = "'>";
    var option3 = "</option>";
    var bpidValue = $("#bpid").val();
    $.ajax({
    url: "bInfo_cascadeTypeById.action",
    type: "post",
    data: "bpid="+bpidValue,
    error: function(){
    alert('栏目类型关联失败'); 
    $('#errorMsg').html("栏目类型关联失败,原因:该栏目下没有类型,故无法修改业务");
    $('#btid').html(option1+0+option2+"==选择类型=="+option3);
    },
    success : function(result){
    var dataObj = eval("("+result+")");//转换为json对象
    // alert(dataObj.Table.length);//输出root的子对象数量
    var a;
    for(var i = 0; i < dataObj.Table.length; i++){
    a += option1 + dataObj.Table[i].btid + option2 + dataObj.Table[i].typename + option3;
    }
    $('#btid').html(a);
    }
    });
    });
      

  7.   

    ajax在级联层次比较少的情况下(<=3)下很好用。层次很多的时候,估计只能用request到server刷新数据了
      

  8.   

    我认为楼上的太麻烦了,有很多方法,当然要选择简单的,就用表单隐藏域了,把数据存储到session或是request这中,然后在根据你的判断
      

  9.   

    比如省份province和城市city的级联,把你保存好的数据存储到session或request中,然后引用Jquery
    <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
    <script type="text/javascript">
    $(function() {
            $("#province option[value='<s:property value="#session.userinfo.province"/>']").attr("selected", true);
                          //value设置成你保存好的省份数据
            $("#city option[value='<s:property value="#session.userinfo.city"/>']").attr("selected", true);
                         //values设置成你保存好的城市数据
    })
    </script>