package com.wang.struts.util;
import java.util.List;
import com.wang.struts.dao.QxDao;
import com.wang.struts.dao.implement.FactoryDao;
import com.wang.struts.dao.implement.FwlxImplementDao;
import com.wang.struts.dao.implement.JdImplementDao;
import com.wang.struts.dao.implement.QxImplementDao;
import com.wang.struts.vo.CountJdVo;
import com.wang.struts.vo.FwlxVo;
import com.wang.struts.vo.JdVo;
import com.wang.struts.vo.QxVO;
public class JspUtil {
private static StringBuffer arrayStr = null;
private static StringBuffer qxOptionsStr = null;
private static StringBuffer fwlxOptionsStr = null;
public static StringBuffer getArrayStr() {// synchronized
if (arrayStr == null) {
arrayStr = new StringBuffer();
QxImplementDao qxProcess=FactoryDao.getFactoryQxImplementDao();//得到到对象
JdImplementDao jdProcess = FactoryDao.getFactoryJdImplementDao();
List qxList = qxProcess.getQxList();//调用dao,得到所有的区县
List jdList = jdProcess.getJDList();//得到所有的街道列表
List jdNum = jdProcess.getJDNums(); //根据区县得到所有的街道
int qxLength = qxList.size();
// int jdLength = jdList.size();
// int jdNumLength = jdNum.size();
int pointer = 0;// 指示
arrayStr.append("var v = new Array(" + qxLength + ");\n");// option的value
arrayStr.append("var n = new Array(" + qxLength + ");\n");// option的显示值
for (int i = 0; i < qxLength; i++) {
int qxid = ((QxVO) qxList.get(i)).getQxId();
arrayStr.append("v[" + qxid + "] = new Array(");
int l = 0;
try {
l = ((CountJdVo) jdNum.get(i)).getTotal();//根据区县Id得到对应的街道数量
} catch (Exception e) {
// e.printStackTrace();
System.out.println("========无此区县("
+ ((QxVO) qxList.get(i)).getQxId() + ")的街道资料========");
}
for (int j = 0; j < l; j++) {
int value = ((JdVo) jdList.get(pointer + j)).getJdid();
arrayStr.append("'" + value + "'");
if (j != l - 1) {
arrayStr.append(",");
}
}
arrayStr.append(");\n");
arrayStr.append("n[" + qxid + "] = new Array(");
for (int j = 0; j < l; j++) {
String name = ((JdVo) jdList.get(pointer + j)).getJd();//根据街道数量来遍历街道名称
arrayStr.append("'" + name + "'");
if (j != l - 1) {
arrayStr.append(",");
}
}
arrayStr.append(");\n");
pointer += l;
}
}
return arrayStr;
}
public static StringBuffer getQxOptions() {
if (qxOptionsStr == null) {
qxOptionsStr = new StringBuffer();
QxImplementDao qxProcess=FactoryDao.getFactoryQxImplementDao();
List qxList = qxProcess.getQxList();
for (int i = 1; i <= qxList.size(); i++) {
qxOptionsStr.append("<option value='"
+ ((QxVO) qxList.get(i - 1)).getQxId() + "'>"
+ ((QxVO) qxList.get(i - 1)).getQw() + "</option>\n");
}
}
return qxOptionsStr;
}
public static StringBuffer getFwlxOptions() {
if (fwlxOptionsStr == null) {
fwlxOptionsStr = new StringBuffer();
FwlxImplementDao fwlxProcess=FactoryDao.getFactoryFwlxImplementDao();
List fwlxList = fwlxProcess.getFwlxList();
for (int i = 1; i <= fwlxList.size(); i++) {
fwlxOptionsStr.append("<option value='"
+ ((FwlxVo) fwlxList.get(i - 1)).getFwid() + "'>"
+ ((FwlxVo) fwlxList.get(i - 1)).getFwlx()
+ "</option>\n");
}
}
return fwlxOptionsStr;
}
public static StringBuffer getFwxxStr(String fwxx){
StringBuffer fwxxRes = new StringBuffer();
if(fwxx.length()>35){
int rows = fwxx.length()/35 + 1;
for(int i=0;i<rows-1;i++){
fwxxRes.append(fwxx.subSequence(35*i,35*(i+1))+"<br/>");
}
fwxxRes.append(fwxx.subSequence(35*(rows-1), fwxx.length()-1));
} else {
fwxxRes.append(fwxx);
}
return fwxxRes;
}
}
在jsp 中的用<%=jspUtil.getArrayStr()%> j即可,其他方法一样
如:
<html>
<head>
<title>级联菜单</title>
</head>
<script language="javascript">
<!--
<!-- 取得javascript数组信息 -->
<%=JspUtil.getArrayStr()%>
function selectjd(){
var row = document.houseForm["fzxx.qxid"].value;//alert(row);
var col = v[row].length;//alert(col);
document.houseForm["fzxx.jdId"].length = 0;
document.houseForm["fzxx.jdId"].options[0] = new Option('不限--','0');
for(var i=0;i<col;i++) {
if(v[row][i]!=0){
document.houseForm["fzxx.jdId"].options[i+1] = new Option(n[row][i],v[row][i]);
}
}
}
-->
</script>
<body>
<table width="88%;" id="advSearch" style="border:solid 0px #000;display:none;">
<tr>
<td>区县:<br><br><br></td>
<td><select name="fzxx.qxid" onChange="selectjd()" style="width:80">
<option value="0">不限--</option>
<%=JspUtil.getQxOptions() %>
</select><br><br><br></td>
<td rowspan="6"> <br><br><br></td>
</tr>
<tr>
<td>街道:<br><br><br></td>
<td><select name="fzxx.jdId" style="width:80">
<option value="0">不限--</option>
</select><br><br><br></td>
</tr>
</table>
</body>
</html>
分享到:
相关推荐
在IT行业中,级联菜单(Cascading Menu)是一种常见的用户界面元素,它允许用户通过多级选择来筛选或导航到特定的信息。在本案例中,我们关注的是如何使用Java和Ajax技术来实现一个二级联动的菜单。Ajax,即...
通过上述步骤,我们已经了解了如何使用JSP技术和JavaScript实现一个简单的级联菜单功能。这种方法不仅适用于简单的省份-城市选择器,还可以扩展到更复杂的多级选择器中。开发者可以根据具体需求调整和优化实现细节,...
在我们的三级级联菜单中,服务器可能会返回一个包含各级菜单项的JSON数组,供前端JavaScript代码处理。 **JSP (JavaServer Pages)** 是Java平台上的动态网页技术,它可以将Java代码嵌入到HTML页面中,使得服务器端...
在本例中,我们讨论的是通过JavaScript实现的二级级联菜单,即在一个文本框的选择会影响到另一个文本框的可选项。 一、级联菜单的基本概念 级联菜单由多个层次的菜单项构成,通常表现为一个菜单项展开后显示下一级...
城市级联菜单是一种常见的前端交互设计,用于在网页上选择地理位置时,如省、市、区,用户在选择一个省份后,下拉菜单会自动更新为对应省份的城市列表。这种功能通常由Java后端和JavaScript前端配合实现,利用XML...
JSP与JavaScript级联菜单的概念 级联菜单是一种常见的UI组件,常用于表单或数据筛选场景,如用户选择省份后自动显示对应城市。本示例中,JSP(Java Server Pages)用于处理服务器端逻辑,而JavaScript则负责客户端...
首先,我们需要创建一个数据库表来存储级联菜单的数据。假设我们有一个名为`category`的表,它有两列:`id`(主键,整型),`name`(字符串)和`parent_id`(整型,表示父级ID)。`parent_id`为0时代表顶级菜单项,...
级联菜单(Cascading Menu)在...总的来说,这个项目旨在教你如何结合Java、DWR和数据库技术实现动态的级联菜单,提高Web应用的交互性。通过实践这个例子,你可以加深对Java后端开发、Ajax通信和前端动态更新的理解。
6. **文档**:提供的"简单级联菜单(java实现).doc"可能包含程序的实现细节,包括代码示例、设计思路和使用说明,对于理解和复用这个程序非常有帮助。 在实际开发中,为了实现这样的功能,开发者需要具备扎实的Java...
在Web开发中,树形级联菜单是一种常见的用户界面元素,尤其在数据层次结构复杂的系统中,如组织架构、文件目录或数据库表关系的展示。本项目实现了将这种菜单与Oracle数据库连接,利用Ajax和Servlet技术,实现了动态...
这个例子“dwr例子演示级联菜单”旨在帮助我们理解如何使用DWR来创建动态的、交互式的级联下拉菜单。级联菜单常用于Web应用程序中,例如在选择国家时自动更新相应的省份列表。 首先,让我们了解一下DWR的基本工作...
本话题主要探讨如何使用JavaScript(js)结合JavaServer Pages(jsp)标签来实现这样的功能。JavaScript是客户端脚本语言,负责处理用户交互,而jsp标签则是在服务器端执行,生成动态HTML内容。 首先,我们需要理解...
以上就是使用Struts2实现级联菜单的基本流程。在实际开发中,你可能还需要考虑错误处理、缓存优化、国际化支持等因素。提供的"级联Demo"压缩包文件可能包含了完成上述步骤的具体示例代码,你可以将其导入到项目中,...
在这个“SSH+级联菜单应用案例”中,我们将深入探讨如何利用这三个框架来实现一个动态的、具有级联效果的菜单系统。 1. **Struts2框架**:作为MVC(Model-View-Controller)架构的一部分,Struts2负责处理HTTP请求...
通过这个"jsp + servlet 级联菜单"项目,新手可以学习到如何结合使用JSP和Servlet来构建动态的、交互式的Web应用,理解服务器端与客户端的交互机制,以及数据的获取、处理和展示过程。通过练习,不仅可以提升编程...
在IT行业中,级联菜单(Cascading Menu)是一种常见的用户界面元素,它允许用户在多个相关选项之间进行逐级选择。在这个特定的场景中,我们利用Ajax技术和Direct Web Remoting(DWR)框架来创建一个动态的省份城市...
在本项目"jsp+db的js级联菜单"中,我们看到它利用了Java Server Pages (JSP) 和 JavaScript 技术,并结合数据库来动态生成级联菜单。 JSP是Java的一种视图技术,用于在服务器端生成HTML或其他类型的Web内容。开发者...
在IT行业中,动态Web应用程序的开发常常涉及到用户界面的交互性,其中级联菜单(Cascading Menu)是一种常见的设计模式,特别是在数据管理和导航中。DWR(Direct Web Remoting)是一个JavaScript库,它允许Java代码...
2. **前端代码**:展示如何在HTML页面中使用JavaScript和DWR API创建级联菜单的结构,并实现事件监听,触发服务器端的方法调用。 3. **后端代码**:解释如何在Java中编写处理级联菜单请求的方法,获取并返回子菜单...