JSF中配置dwr

本文以实例形式描述在jsf中配置dwr的方法。

应用要求:在javascript方法中调用后台Bean的方法和Spring容器中服务的方法。

步骤如下:

     1、  JAR包支持

dwr.jarjson-lib-2.3-jdk13.jarezmorph-1.0.6.jar

说明:依赖的jar包:commons-collections-XX.jar,版本必须在3.0以上

 

2、web.xml配置DwrServlet和FacesExtensionFilter

 

<!-- dwr begin -->
  <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
      <param-name>debug</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>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
  <!--DWR/Faces 过滤器允许你不在JSF的生命周期里调用FacesContext中的Bean。-->
  <filter>
    <filter-name>DwrFacesFilter</filter-name>
    <filter-class>org.directwebremoting.faces.FacesExtensionFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>DwrFacesFilter</filter-name>
    <url-pattern>/dwr/*</url-pattern>
  </filter-mapping>
 <!-- dwr end -->

 

<!--[if !supportLists]-->   3、  <!--[endif]-->WEB-INF下建立dwr.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
	<allow>
		<!--调用jsf后台Bean的方法-->
		<create creator="jsf" javascript="BranchMerg">
			<param name="managedBeanName" value="BranchMerg" />
			<param name="class"
				value="cn.ccb.zjtsrmbp.security.web.bb.BranchMerg" />
		</create>
<!--直接调用spring容器内服务的方法-->
<create javascript="billBranch" creator="spring">
			<param name="beanName" value="securityBillBranchNewUCCTarget" />	
		</create>
	</allow>
</dwr>

 4、  Service里的方法范例

 

public String getSubBillBranch(String orgNo) {

	List objects=XXX;//可序列化的对象
	JSONArray jsonArray = JSONArray.fromObject(objects);//通过json方式进行序列化
	String jsonStr = jsonArray.toString();
	return jsonStr;
}

5、JS方法调用DWR

 

<script type="text/javascript"
		src="<%=request.getContextPath()%>/js/util.js"></script>
	<script type='text/javascript'
		src='<%=request.getContextPath()%>/dwr/engine.js'></script>
	<!---下面的billBranch.js名称对应dwr.xml里的配置--->
	<script type='text/javascript'
		src='<%=request.getContextPath()%>/dwr/interface/billBranch.js'></script>
………………………….

<script >
方法一:js方法里直接获取spring容器内对象,并调用方法
//参数
var tempBranchCode = '<%=request.getSession().getAttribute("logonBranchId")%>';	
//直接使用,并传参,指定回调函数
billBranch.getSubBillBranch(tempBranchCode,invokeFun);
//回调函数接收java方法的json结果,并做解析
function invokeFun(data){
	alert(data);
}
方法二:js直接调用指定后台bean的方法
function go(){
   BillFee.findFirstPage(invokeFun);
 }
 function invokeFun (){
  alert(“over!”);
 }
</script>

猜你喜欢

转载自o-oand0-0.iteye.com/blog/1328510
jsf
dwr
今日推荐