struts2+spring+hibernate+dwr3實現下拉框二級聯動
來源:程序員人生 發布時間:2015-01-09 09:01:10 閱讀次數:2695次
3大框架如何整合我這就不說了,csdn里很多大神都有詳細整合博客。
由于是用spring管理了struts2和hibernate,所以我們只要把spring與dwr整合就好了。
首先我們需要dwr.jar我用的是最新的dwr3,之前測試過dwr2也是成功的。
先把我們的dwr.jar放到工程的lib目錄下,再在web.xml的同等級目錄下新建1個dwr.xml。
這是我的dwr.xml配置
<?xml version="1.0" encoding="UTF⑻"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
<dwr>
<allow>
<!-- List到頁面上,就是數組。Map到頁面上,就這樣去rtu["字段名稱"],如過從
數據庫中查詢到的,記得字段名稱大寫 -->
<convert converter="array" match="*"/>
<convert converter="array" match="[[*"/>
<convert converter="collection" match="java.util.Collection"/>
<!-- 傳統的DWR -->
<create javascript="CourseAction" creator="spring">
<param name="beanName" value="courseAction" />
</create>
//你所需要用到的javabean
<convert converter="bean" match="com.jxust.bean.Chapter"> </convert>
<convert converter="bean" match="com.jxust.bean.Course"> </convert>
<convert converter="bean" match="com.jxust.service.serviceImpl.VideoServiceImpl"> </convert>
</allow>
<signatures>
<![CDATA[
import java.util.Map ;
import java.util.List ;
]]>
</signatures>
</dwr>
接著再在web.xml里面加入這段代碼
<!-- dwr配置 -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>config-dwr</param-name>
<param-value>/WEB-INF/dwr.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>500</param-value>
</init-param>
<init-param>
<param-name>allowGetForSafariButMakeForgeryEasier</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
這是用來配置dwr的。
接著在你所要引入的dwr的頁面上引入/dwr/util.js、/dwr/engine.js、和你要操作的java方法我這里用的是引入了action里面的方法/dwr/interface/CourseAction.js
<script type='text/javascript'src="<s:url value='/dwr/util.js'/>"></script>
<script type='text/javascript' src="<s:url value='/dwr/engine.js'/>"></script>
<script type='text/javascript' src="<s:url value='/dwr/interface/CourseAction.js'/>"></script>
我測試過好像dwr的兩個工具類不可以放在引入action方法后面,如有毛病請大神改正。
下面是我的頁面完全代碼
<%@ page language="java" import="java.util.*" pageEncoding="UTF⑻"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
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>videoUpload</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type='text/javascript'src="<s:url value='/dwr/util.js'/>"></script>
<script type='text/javascript' src="<s:url value='/dwr/engine.js'/>"></script>
<script type='text/javascript' src="<s:url value='/dwr/interface/CourseAction.js'/>"></script>
<script>
function getList(){
var course=document.getElementById("course_title").value;
CourseAction.getChapterList(course,getChapter_callback)
}
function getChapter_callback(data){
alert(data);
var chapter=document.getElementById("course_chapter");
chapter.options.length=0;
for(var i=0;i<data.length;i++)
{
var opt=document.createElement("option")
opt.value=data[i].title;
opt.innerText=data[i].title;
//var opt=new option(data[i].title,data[i]);
chapter.appendChild(opt);
}
}
</script>
</head>
<body>
<s:form name="videoForm" id="videoForm" action="courseAction_addVideo" method="post">
<table width="100%" border="0" cellpadding="1" cellspacing="1">
<tr bgcolor="#ccccff" >
<td colspan="2" align="center"><strong>添加視頻</strong></td>
</tr>
<tr bgcolor="#ccccff" >
<td width="18%">選擇課程</td>
<td width="82%"><s:select onchange="getList();" name="course.name" id="course_title" list="#CourseList"
headerKey="0" headerValue="-請選擇課程-" listKey="name" listValue="name" /></td>
</tr>
<tr bgcolor="#ccccff" >
<td>選擇章節名稱:</td>
<td><s:select name="chapter.title" id="course_chapter" list="#{}"
listKey="title" /></td>
</tr>
<tr bgcolor="#ccccff" >
<td>確認添加</td>
<td><input type="button" id="button" value="確認添加"/></td>
</tr>
</table>
</s:form>
</body>
</html>
索性把java代碼也貼出來
//dwr2級聯動
public Set<Chapter> getChapterList(String name)throws Exception{
System.out.println("asdfasd");
Course course=courseService.findBytitle(name);
getChapterList=course.getCourseChapter();
return getChapterList;
}
List 的getter、setter方法省略
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈