一个关于Struts+JavaScript省市联动菜单的问题

现在要用Struts+JavaScript实现一个省市联动菜单,遇到了点问题,实现思想是这样的:
首先页面显示时,加载省的选项,然后选择省后,将省的值传到Action中,调用方法获取市的集合,再将市的集合赋值给FormBean,再将FormBean传到原JSP页面,从而达到动态效果,但是现在出了点问题,代码如下:

我有一XML文件:
<?xml version="1.0" encoding="GBK"?>
<china>
<province name="直辖市">
<city>北京</city>
<city>上海</city>
<city>天津</city>
<city>重庆</city>
</province>
<province name="广东">
<city>广州</city>
<city>珠海</city>
<city>深圳</city>
<city>东莞</city>
</province>
<province name="广西">
<city>桂林</city>
<city>柳州</city>
<city>北海</city>
<city>南宁</city>
</province>
<province name="海南">
<city>海口</city>
<city>三亚</city>
</province>
<province name="湖北">
<city>武汉</city>
<city>鄂州</city>
<city>荆州</city>
<city>十堰</city>
</province>
<province name="湖南">
<city>长沙</city>
<city>岳阳</city>
<city>常德</city>
<city>张家界</city>
</province>
<province name="浙江">
<city>杭州</city>
<city>绍兴</city>
<city>宁波</city>
<city>台州</city>
</province>
<province name="辽宁">
<city>沈阳</city>
<city>大连</city>
<city>抚顺</city>
<city>铁岭</city>
</province>
</china>

***************************************
然后通过JDOM解析,分别获取省市,
package com.selectdemo.tool;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;


public class ReadXml {
Element root = null;

public ReadXml() throws FileNotFoundException, JDOMException, IOException {
super();
SAXBuilder sb = new SAXBuilder();//解析器对象
Document doc = sb.build(this.getClass().getResourceAsStream("/city.xml"));//绑定文件
root = doc.getRootElement();//获取根元素
}

public List getProvince(){ //获取省份
ArrayList provinceList = new ArrayList();
List tempList = root.getChildren();//获取所有省份节点
for(int i=0; i<tempList.size();i++){
Element province=(Element)tempList.get(i);//子节点转型
provinceList.add(province.getAttributeValue("name"));//获取省份节点属性内容
}
return provinceList;
}

public List getCity(String province){
ArrayList cityList = new ArrayList();
List provincetemplist = root.getChildren();//省份集合
for(int i=0; i<provincetemplist.size();i++){
Element provinceElement = (Element)provincetemplist.get(i);
if((provinceElement.getAttributeValue("name")).equals(province)){//如果属性为传进来的名称
List cityTempList = provinceElement.getChildren();//获取子节点集合
for(int j=0; j<cityTempList.size(); j++){//循环
Element cityElement = (Element)cityTempList.get(j);//当前城市节点
cityList.add(cityElement.getTextTrim());//增加城市到集合
}
}
}
return cityList;
}
}
******************************
然后JSP页面代码:
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>

<SCRIPT LANGUAGE="JavaScript">
function fungetCityes()
{
document.forms[0].action="/select.do";
document.forms[0].sumbit();
}
</SCRIPT>
</head>
<body>
<html:form action="/select.do" method="post">

<html:select property="province" οnchange="fungetCityes()">
<html:option value="">请选择省份</html:option>
<html:options property="provinces" />
</html:select>

<html:select property="city">
<html:option value="">请选择城市</html:option>
<html:options property="cities" />
</html:select>

</html:form>

</body>
</html:html>
****************************
接着FormBean:

package com.selectdemo.struts.form;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.struts.action.ActionForm;
import org.jdom.JDOMException;
import com.selectdemo.tool.ReadXml;

public class SelectForm extends ActionForm {
private String province;
private String city;
private Collection provinces;
private Collection cities = new ArrayList();

public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}

public Collection getCities() {
try {
ReadXml readXml = new ReadXml();
cities = readXml.getCity(province);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return cities;
}

public void setCities(Collection cities) {
this.cities = cities;
}

public Collection getProvinces() {
try {
ReadXml readXml = new ReadXml();
provinces = readXml.getProvince();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return provinces;
}

public void setProvinces(Collection provinces) {
this.provinces = provinces;
}
}

*************************************************
Action:

package com.selectdemo.struts.action;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.jdom.JDOMException;
import com.selectdemo.struts.form.SelectForm;
import com.selectdemo.tool.ReadXml;

public class SelectAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
SelectForm selectForm = (SelectForm) form;
String province = selectForm.getProvince();
System.out.println(province);

try {
ReadXml readXml = new ReadXml();
List list = readXml.getCity(province);//获取城市集合
selectForm.setCities(list);//将城市集合设置给Form
request.setAttribute("selectForm", selectForm);//返回给原JSP页面
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return mapping.findForward("success");
}
}

*************************
struts-config.xml
<form-bean name="selectForm" type="com.selectdemo.struts.form.SelectForm" />

<action input="/select.jsp" name="selectForm" path="/select" scope="request"
type="com.selectdemo.struts.action.SelectAction">
<forward name="success" path="/select.jsp" />
</action>


**********************************************
<SCRIPT LANGUAGE="JavaScript">
function fungetCityes()
{
document.forms[0].action="/select.do";
document.forms[0].sumbit();
}
</SCRIPT>
感觉这里有问题,但不知道怎么写.


现在的问题是:省份能够取出,并在JSP页面正常显示,但是当我选择省份后,却左下角显示"页面错误",应该是JavaScript的问题,可是我不知道出错在哪里,请看一下,谢谢.
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值