前一个select的值改变,后一个select跟随改变的方法:使用dwr的方法

本文介绍了一个使用JSP实现的菜单级联选择框案例。案例中详细展示了如何通过客户端JavaScript与服务器端Java交互,根据用户选择的不同菜单级别动态加载相应的父级菜单选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp 页面中

<script type='text/javascript' src="<%=path%>/dwr/util.js"></script>
<script type='text/javascript' src="<%=path%>/dwr/engine.js"></script>
<script type='text/javascript' src="<%=path%>/dwr/interface/sysMenuService.js"></script>

<script type="text/javascript">    
      /**
      *根据用户选择菜单级别显示父级菜单选项
      */
     function showFatherMenu(){
     var selectVal=$("#istopmenu").val();
     document.getElementById("fatherMenu").options.length = 0; 
     sysMenuService.showFatherMenu(selectVal,function(data){
             for(var i=0;i<data.length;i++){
                $("#fatherMenu").append("<option value='"+data[i].menunumber+"'>"+data[i].menuname+"</option>"); 
             } 
        });
     
     }
</script>

form表单中的内容

<li><label class="label">菜单级别:</label><s:select id="istopmenu" cssClass="select" list="#{1:'一级菜单',2:'二级菜单',3:'三级菜单' }" name="sysMenu.istopmenu" style="width:300px;" value="" onchange="showFatherMenu()"></s:select></li>
<li><label class="label">父级菜单:</label><select id="fatherMenu" name="sysMenu.supermenuid" style="width:300px;"></select></li>

可以看出在菜单级别中:有三个值{1:'一级菜单',2:'二级菜单',3:'三级菜单' },通过onchange="showFatherMenu()"调用showFatherMenu函数,来感知list值的改变

当值改变之后,会根据list中选择的key来确定下面父级菜单的内容



在服务器端的代码

这个主要是写在service中,必须在service接口和service实现类中都的写上该方法

/**
* 根据用户选择的级别,选择对应的父级别
*/
public List<SysMenu> showFatherMenu(String selectVal){
List<SysMenu> list=new ArrayList<SysMenu>();
if(selectVal!=null||!"".equals(selectVal)){
int num=Integer.valueOf(selectVal);
String hql="from SysMenu where istopmenu=?";
try{
list=baseDAO.find(hql, new Object[]{(num-1)+""});
}catch(Exception e){
e.printStackTrace();
}
}
return list;

}

dwr.xml中的编写

<!-- 菜单信息验证 -->
<create creator="spring" javascript="sysMenuService">
<param name="beanName" value="sysMenuService"></param>
<include method="showFatherMenu" />
</create>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值