读书人

jquery+json+struts2+mybatis实现的多

发布时间: 2012-12-22 12:05:07 作者: rapoo

jquery+json+struts2+mybatis实现的多级关联下拉效果

<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>?

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <package name="default" namespace="/" extends="json-default"> </package></struts>?

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/car"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="com/ctq/entity/Car.xml"/></mappers></configuration>?

public class Car implements Serializable {/** * */private static final long serialVersionUID = -3292379249326160585L;private int id;private String name;private int parent_id;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getParent_id() {return parent_id;}public void setParent_id(int parent_id) {this.parent_id = parent_id;}}?

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="com.ctq.entity.CarMapper"> </mapper>?

public class CarAction extends ActionSupport {private int carId;private Car car;private List<Car> lc;public List<Car> getLc() {return lc;}public void setLc(List<Car> lc) {this.lc = lc;}public int getCarId() {return carId;}public void setCarId(int carId) {this.carId = carId;}public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}public String listCar() throws Exception {lc=CarImpl.listCar(carId);return "list";}}?

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <package name="default" namespace="/" extends="json-default"> <action name="getCarJSON" type="json"></result> </action> </package></struts>?

public class CarImpl {public static List<Car> listCar(int id) {SqlSession session=Util.getSqlSessionFactory().openSession();List<Car> la=null;try{la=session.selectList("com.ctq.entity.CarMapper.listCar", id);}catch(Exception e){e.printStackTrace();}finally{session.close();}return la;}}?

public class Util {private static SqlSessionFactory sqlSessionFactory = null;static{String resource = "configuration.xml";Reader reader = null;try {reader = Resources.getResourceAsReader(resource);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);}public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory;}}?

<mapper namespace="com.ctq.entity.CarMapper"> <select id="listCar" parameterType="int" resultType="com.ctq.entity.Car">SELECT * FROM car WHERE parent_id=#{id}</select></mapper>?

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><script type="text/javascript" src="<%=path %>/js/jquery-1.5.1.js"></script><script type="text/javascript" src="<%=path %>/js/car.js"></script> </head> <body> <div id=""><select name="toCarBrand" id="toCarBrand" onchange="getCar('type')" onkeyup="this.blur();this.focus();"><option value="" selected>请选择车牌...</option></select><select name="toCarType" id="toCarType" onchange="getCar('num')" onkeyup="this.blur();this.focus();"><option value="">请选择车系...</option></select><select name="toCarNum" id="toCarNum" onchange="setTheOne(this.name)" onkeyup="this.blur();this.focus();"><option value="">请选择型号...</option></select></div><div id="message"></div> </body></html>?这边我修改了select标签,加入了onchange和onkeyup事件,这样就可以兼容了IE和Firefox了(因为Firefox不支持onchange。)

$(document).ready(function() {getCarBrand();});//取所有车牌function getCarBrand() {var url = "getCarJSON!listCar.action?carId=0";$.getJSON(url, function(data) {setCarBrand(data);});}//设置车牌function setCarBrand(data) {var carBrand = document.getElementById("toCarBrand");$("#message").html("");$.each(data.lc, function(i, area) {var value = area.id;var text = area.name;$("#message").append("<div>value=" + value + ",text=" + text + "</div>");var option = new Option(text, value);carBrand.options.add(option);});}//按上级ID取相应的型号function getCar(name) {if (name == 'type') {clearSel(document.getElementById("toCarType")); //清空车牌var carBrand = document.getElementById("toCarBrand");if (carBrand.options[carBrand.selectedIndex].value == "")return;var carId = carBrand.options[carBrand.selectedIndex].value;$("#message").html("");$("#message").append("<div>carId=" + carId + "</div>");var url = "getCarJSON!listCar.action?carId=" + carId + "";$.getJSON(url, function(data) {setCarType(data);});} else if (name == 'num') {clearSel(document.getElementById("toCarNum")); //清空型号var carNum = document.getElementById("toCarType");if (carNum.options[carNum.selectedIndex].value == "")return;var carId = carNum.options[carNum.selectedIndex].value;$("#message").html("");$("#message").append("<div>carId=" + carId + "</div>");var url = "getCarJSON!listCar.action?carId=" + carId + "";$.getJSON(url, function(data) {setCarNum(data);});}}//当改变车牌时设置对应系列function setCarType(data) {var carType = document.getElementById("toCarType");var value1=null;var text1="请选择对应的车系";var option1=new Option(text1,value1);carType.options.add(option1);$.each(data.lc, function(i, area) {var value = area.id;var text = area.name;var option = new Option(text, value);carType.options.add(option);});}//当改变型号时设置对应的具体型号function setCarNum(data) {var carNum = document.getElementById("toCarNum");var value1=null;var text1="请选择对应的型号";var option1=new Option(text1,value1);carNum.options.add(option1);$.each(data.lc, function(i, area) {var value = area.id;var text = area.name;var option = new Option(text, value);carNum.options.add(option);});}//设置具体的某一个function setTheOne(data){$("#message").html("");var theOne=document.getElementById("toCarNum");var value=theOne.value;$("#message").append("<div>value=" + value + "</div>");}// 清空下拉列表function clearSel(oSelect) {while (oSelect.childNodes.length > 0) {oSelect.removeChild(oSelect.childNodes[0]);}}?


7 楼 relic6 2011-04-21 thzthbthy 写道你把web.xml的代码也贴出来把,老提示找不到applicationContext.xml

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

这个在web.xml中配置下
8 楼 linhrg 2011-05-11 怎么没有整个项目的源代码,总是提示有错 9 楼 zb7503 2011-05-12 yangguo 写道一个小功能做得好辛苦啊。

建议使用 mybatis-spring 的 mapper,再自动生成 mapper.xml

+1
struts2完全可以用spring mvc 代替的。 10 楼 benqend 2011-05-17 1.既然用了spring,怎么不让spring管理mybatis
2.struts2的result中最好是有root属性吧,要不整个bean都会被编译成json 11 楼 夜神月 2011-05-31 spring+springmvc+mybatis+rest岂不是更爽 12 楼 relic6 2011-06-02 夜神月 写道spring+springmvc+mybatis+rest岂不是更爽
呵呵,正好目前用着这些框架,蛮爽的。 13 楼 uucall0123 2011-06-22 <p>好帖 啊 。。。顶起</p> 14 楼 yin_bp 2011-06-23 zb7503 写道yangguo 写道一个小功能做得好辛苦啊。

建议使用 mybatis-spring 的 mapper,再自动生成 mapper.xml

+1
struts2完全可以用spring mvc 代替的。

struts2和spring mvc 完全可以被bboss mvc替换
15 楼 yin_bp 2011-06-23 relic6 写道夜神月 写道spring+springmvc+mybatis+rest岂不是更爽
呵呵,正好目前用着这些框架,蛮爽的。

bboss aop/ioc+bboss mvc+bboss persistent+bboss rest岂不是更更爽

读书人网 >JavaScript

热点推荐