2011-12-12 82 views
0

我必须使用struts设计一个网页。 我必须显示两个下拉菜单。 第一个下拉列表中的数据将从数据库动态填充。这部分已完成。 我必须根据第一个下拉列表中的选择填充第二个下拉列表中的数据。在struts中级联下拉

因为我是struts技术的新手,所以我需要这方面的帮助。

感谢, 萨钦

+0

它可以帮助张贴到目前为止您已经编写了这一步的代码。 – Verbeia

回答

0
You can use ajax to load data to the dropdown2 by invoking it in the onchange method for dropdown1 

DropDown1: 
---------- 

    <s:select key="label.name" list="list1" onchange="reloadView();" name="id" id="list"> 
    </s:select> 

reloadView() 
------------ 

try { 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
    } 
    catch (e) 
    { 
     // Internet Explorer Browsers 
     try { 
       ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
        catch (e) 
       { 
       try { 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
       catch (e) 
       { 
           alert("Your browser has no AJAX Support!"); 
        return false; 
       } 
     } 
     } 
    var url = "yourUrl"; 
    ajaxRequest.open("POST", url, true); 
    ajaxRequest.onreadystatechange = function() 
    { 
     try 
     { 
       if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { 
         var res = ajaxRequest.responseText; 
         if (res) 
         { 
           document.getElementById("yourDiv").innerHTML = res; 
           adjustTable(); 
         } 
       } 
     } 
     catch (e) 
     { 

     } 
    } 
    ajaxRequest.send(null); 

DropDown2 
--------- 

    <div id="yourDiv"> 
    <s:select> 
    </div> 
+0

感谢您的回复。 是的,我可以使用Ajax。但是,如果我将使用第二个HTML下拉菜单,我如何才能获得Action Class中的值。我需要两个在我的Action类中的两个下拉对象。 –

+0

这是你应该做的,action1.action会为dropdown1加载数据,并将页面重定向到一个jsp。在下拉列表1中,您将调用另一个操作类或相同的操作类(但调用另一种方法或使用将此调用与调用区分开的参数来标识调用,以加载dropdown1的数据),这将为dropdown2加载数据。 – Pradeep

+0

嗨Pradeep, 但是,你能告诉我如何在下拉式的onchange事件中调用一个动作? –