一般我们对于固定值联动的下拉框可能会直接把固定值放在数组中,在选择一级下拉框时触发onchange事件,对二级下拉框中赋值。然而在很多情况下我们需要在选择一级下拉框后从数据库动态取出值赋给二级下拉框,这时我们就需要借助ajax无页面刷新的优势来实现。
首先我们来看jsp页面
<tr>
<td>
<font color="red">*</font>一级下拉框:
</td>
<td>
<html:select property="systemkey" onchange="changeValue()">
<html:options collection="systemkeyMap" property="label"
labelProperty="value" />
</html:select>
</td>
</tr>
<tr>
<td>
<font color="red">*</font>二级下拉框:
</td>
<td>
<html:select property="reportkey" >
<html:options collection="reportkeyMap" property="label"
labelProperty="value" />
</html:select>
</td>
</tr>
jsp页面我采用的是
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>struts_html
标签,可以根据自己的情况采用各种标签,这里就以它作为例子onchange时调用changeValue()方法如下
var jq=jQuery.noConflict();
function changeValue(){
var selectValue=document.forms[0].systemkey.value;
jq.ajax({
type:"POST",
url:"t09_report_analy_ajax.do",
data:"systemkey="+selectValue, // 传入的参数
timeout: 10000,
// dataType:"json",
success:function(data){
setValue(data);
}
});
}
function setValue(data){
document.forms[0].reportkey.options.length=0;
var spl=data.split(",");
document.forms[0].reportkey.options[0]=new Option('请选择','请选择');
for(var i=1;i<spl.length;i++){
document.forms[0].reportkey.options[i]=new Option(spl[i-1],spl[i-1]);
}
}
这里采用jquery封装的ajax来实现,当然要引入jquery-1.6.min.js文件以及要有jquery jar包的支持,struts.xml中配置文件
<action path="/t09_report_analy/t09_report_analy_ajax" parameter="analy_ajax" name="reportActionForm"
type="com.ist.poc.rpp.controller.Report_analyAction" validate="false" scope="request">
</action>
由于是jquery的初学者,第一次用jquery的ajax,所以在写的过程中会遇到很多的问题,这里我也将自己遇到的问题列出来,以便让初学jquery的童鞋们有所借鉴,
1)对于url这里的写法。我们可以看到对于struts.xml中
path="/t09_report_analy/t09_report_analy_ajax"
所以一般我们在页面跳转时会写"/t09_report_analy/t09_report_analy_ajax.do" 但如果这样写的话是找不到对应得action的,必须将url写到最后的包它会直接定位到要跳转的action中。
2)被注掉的dataType:"json" 。这里的意思是返回的值类型为json类型,这是一个特殊的类型,如果写了这句就意味返回值的类型必须是json类型的,所以我们可以根据自己的情况改写这个类型或者这句话可以不写,所有的类型都可以直接返回。
3)在返回成功后可以得到返回的值data 调用setValue(data)可以将所得到的值放到二级下拉框中,这里就不多做解释了。
action中的代码:
public ActionForward t09_report_analy_ajax(ActionMapping mapping,ActionForm actionform,
HttpServletRequest request,HttpServletResponse response)
throws Exception{
response.setContentType("text/html");
response.setCharacterEncoding("GBK");
//根据参数从数据库得到二级菜单数据
Report_analyDAO report_analyDAO=(Report_analyDAO)context.getBean("report_analyDAO");
String systemkeyStr=request.getParameter("systemkey"); //得到前台传来的参数
ArrayList<Report> reportList=(ArrayList)Report_analyDAO.getReportKeyBySys(sqlMap, systemkeyStr);
String context="";
for(Report report:reportList){
context+=report.getReportname()+",";
}
PrintWriter out=response.getWriter();
out.print(context);
out.close();
return null;
}
在action中我们可以用response.getWriter.print()或者response.getWriter.write()将得到的结果返回。
分享到:
相关推荐
在Struts2框架中,我们可以利用Ajax来实现二级联动效果,即在一个下拉框的选择改变时,通过Ajax请求动态地更新另一个下拉框的内容。 首先,我们需要了解Struts2的Action类,它是处理用户请求的核心。在实现二级联动...
在Struts框架中实现下拉框的多级联动是一项常见的需求,比如在地址选择时,可以选择国家、省份、城市等,每一级的选择都会影响下一级的选项。 在Struts框架中,实现下拉框的联动通常涉及到以下几个关键知识点: 1....
在给定的“struts2二级联动下拉列表”项目中,开发者利用Struts2、Hibernate和Spring这三大核心技术,创建了一个功能,使得用户在网页上可以选择省份和城市,这两个下拉列表会进行联动,即选择省份后,城市下拉列表...
“ajax,struts2,json实现省市区三级联动源码含全国省市区数据库”这一标题揭示了这个压缩包包含的是一项使用AJAX、Struts2和JSON技术来实现的省市区三级联动功能的源代码。这项技术常用于web应用中,允许用户在选择...
本项目"struts2+hibernate+spring实现的二级联动下拉列表"展示了如何将这三个框架整合起来,实现一个功能:在用户界面上展示两个下拉列表,当用户选择第一个下拉框的值时,第二个下拉框的内容会根据所选值动态更新。...
在本项目中,"json实现三级联动下拉框---struts版(数据来自mysql数据库)"是利用JSON来处理省市县三级联动效果的示例,它通过Struts框架与MySQL数据库进行交互,动态地从数据库获取数据并更新到前端页面的下拉框中...
在本文中,我们将探讨如何使用SSH1框架与jQuery的AJAX功能来处理JSON二维数组,特别是在实现菜单联动下拉框的场景中。SSH1(Spring、Struts、Hibernate)是Java开发中的一个流行MVC框架组合,而jQuery的AJAX功能则...
在Struts与jQuery的整合中,jQuery的AJAX功能与Struts的Ajax插件如Ajax-Struts2可无缝对接。Ajax-Struts2提供了Action支持,使得Action可以直接返回JSON或XML响应,供jQuery解析。这样,你可以创建交互式的界面,如...
在这个小demo中,我们将探讨如何使用Ajax和jQuery技术结合Struts2框架来实现这一功能,并通过JDBC进行数据的增删改查。 首先,我们来看一下`Ajax`(Asynchronous JavaScript and XML)的核心概念。Ajax并非一种单一...
实现三级联动的关键在于,我们需要在用户选择第一个下拉框后动态加载第二个下拉框的数据,然后在第二个下拉框选择后更新第三个下拉框。这通常涉及到Ajax异步请求,利用Struts2的拦截器(Interceptor)和...
**需求分析**:假设我们需要在一个电商网站上实现商品分类的多级联动菜单,即当用户选择一级分类时,相应的二级分类自动更新显示。 ##### 2. **设计思路**: - 客户端通过点击事件触发Ajax请求。 - 服务器端根据...
总结,这个"AJAX省级二级连动例子"是一个典型的前端与后端交互的应用场景,它展示了如何通过AJAX、JavaScript、XML以及JAVA技术实现动态下拉框的联动效果,为用户提供流畅的交互体验。理解并掌握这些技术,对于提升...
利用JavaScript或jQuery监听第一个下拉框的`onChange`事件,当选项改变时发送异步请求(AJAX)到服务器,获取新的级联数据,并更新第二个下拉框。 6. **异步响应**:Action类需要处理AJAX请求,根据请求参数(如...
总的来说,这个"web小项目:省市区三级联动(struts2+json)"是一个典型的前后端交互案例,展示了如何利用Struts2处理业务逻辑,通过JSON进行数据交换,以及JavaScript如何动态更新页面内容,实现用户友好的交互体验...
以上就是基于`Generator类`、`数据库初始化`、`jQuery`和`Struts2`实现二级联动天气预报的关键技术和流程。在实际开发中,还需要考虑性能优化、错误处理、安全性等问题,确保系统的稳定性和用户体验。
在Struts2中实现级联联动菜单,我们需要以下几个关键步骤: 1. **模型设计**: - 首先,定义菜单的数据模型,通常包括ID、名称和父ID等字段。这些数据可能存储在数据库中,通过服务层接口获取。 - 创建一个实体类...
在JavaWeb开发中,二级联动...这就是使用jQuery、AJAX和数据库实现JavaWeb二级联动功能的基本步骤。需要注意的是,实际项目中还需要考虑错误处理、数据验证、性能优化等更多细节,但这个基本流程已经涵盖了核心知识点。
在这个实例中,Ajax负责在用户交互时发送请求到服务器,获取或提交数据,实现级联效果,例如下拉框的联动选择。 jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画设计和Ajax交互。jQuery的...
Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,主要用于构建企业级的Web应用程序。JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,它允许数据以键值对...
Struts AJAX是一个基于Java的Web开发框架,它整合了Struts和AJAX技术,使得开发者可以轻松地在Struts应用中实现异步数据交互,提升用户体验。Struts是Apache组织提供的一个开源MVC(Model-View-Controller)框架,而...