最近一直都在看EXTJS的东西,然后自己实践了下,界面倒是蛮漂亮的,但是一旦涉及到与服务器端进行数据互动麻烦就出来了,本来下了个例子确发现是用DWR的,觉得我既然用了STRUTS2作为MVC的框架,我觉得这个框架还是很不错的,觉得还是把EXTJS整合到一起更好些,找了相关的资料,跟着前辈做了下例子,发现完全不是那么回事,只好自己慢慢摸索,终于把数据交互的问题解决了,所以记录之以便查阅!
       还是从底层开始说吧,拿最经典的例子来解说吧,订单和客户的关系显然是n:1的关系,我hibernate不是用的声明方式所以就用的xml方式做的那么相应的hbm.xml文件如下:
       ORDER.XML 

ExtJs + Struts2 + JSON 程序总结<?xml version="1.0"?>
ExtJs + Struts2 + JSON 程序总结
<!DOCTYPE hibernate-mapping PUBLIC 
ExtJs + Struts2 + JSON 程序总结    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
ExtJs + Struts2 + JSON 程序总结    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
> 
ExtJs + Struts2 + JSON 程序总结       
<hibernate-mapping>
ExtJs + Struts2 + JSON 程序总结       
<class name="com.model.Order"  table="t_order" lazy="false">
ExtJs + Struts2 + JSON 程序总结           
<id name="orderId" column="OrderId">
ExtJs + Struts2 + JSON 程序总结               
<generator class="uuid.hex" />
ExtJs + Struts2 + JSON 程序总结           
</id>
ExtJs + Struts2 + JSON 程序总结           
<property name="name" column="Name" type="string" />
ExtJs + Struts2 + JSON 程序总结           
<property name="desn" column="Desn" type="string"/>
ExtJs + Struts2 + JSON 程序总结           
<property name="booktime" column="Booktime" type="string"/>
ExtJs + Struts2 + JSON 程序总结           
<property name="company" column="Company" />
ExtJs + Struts2 + JSON 程序总结           
<many-to-one lazy="false" name="custom" column="CustomId" class="com.model.Customer" />
ExtJs + Struts2 + JSON 程序总结       
</class>
ExtJs + Struts2 + JSON 程序总结   
</hibernate-mapping>
        CUSTOM.XML
ExtJs + Struts2 + JSON 程序总结<?xml version="1.0"?>
ExtJs + Struts2 + JSON 程序总结
<!DOCTYPE hibernate-mapping PUBLIC 
ExtJs + Struts2 + JSON 程序总结    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
ExtJs + Struts2 + JSON 程序总结    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
> 
ExtJs + Struts2 + JSON 程序总结   
<hibernate-mapping>
ExtJs + Struts2 + JSON 程序总结       
<class name="com.model.Custom"  table="t_custom" lazy="false">
ExtJs + Struts2 + JSON 程序总结           
<id name="customId" column="Id">
ExtJs + Struts2 + JSON 程序总结               
<generator class="uuid.hex" />
ExtJs + Struts2 + JSON 程序总结           
</id>
ExtJs + Struts2 + JSON 程序总结           
<property name="customName" column="Name" type="string" />
ExtJs + Struts2 + JSON 程序总结       
</class>
ExtJs + Struts2 + JSON 程序总结   
</hibernate-mapping>

        相应的MODEL的JAVA我就不写了,只是做个例子而已,呵呵!相应的DAO SERVICE 我都不写了,这个不是我讨论的范围,那么我想在页面上显示所有的信息,那么在OrderAction中我定义了一个getAllOrder的方法,然后通过struts2配置action让EXTJS与服务器数据进行数据交互。因为EXTJS是支持JSON数据格式的,所以我用了JSON-LIB(json-lib-2.2.1-jdk15.jar)这个东东,它还依赖另外的3个包:commons-beanutils-1.7.1-20061106.jar,commons-collections-3.2.1.jar,ezmorph-1.0.4.jar。好了万事俱备只欠东风了,我的getAllOrder方法如下:
ExtJs + Struts2 + JSON 程序总结import java.text.DateFormat;
ExtJs + Struts2 + JSON 程序总结
import java.text.ParseException;
ExtJs + Struts2 + JSON 程序总结
import java.text.SimpleDateFormat;
ExtJs + Struts2 + JSON 程序总结
import java.util.Date;
ExtJs + Struts2 + JSON 程序总结
import java.util.List;
ExtJs + Struts2 + JSON 程序总结
import net.sf.json.*;
ExtJs + Struts2 + JSON 程序总结
//具体的那些serivce的包引入我就省略了
ExtJs + Struts2 + JSON 程序总结
public class OrderAction extends ActionSupport
}
        接下来再是什么,哦,是的,应该是STRUTS的配置了,哈哈
ExtJs + Struts2 + JSON 程序总结<!DOCTYPE struts PUBLIC
ExtJs + Struts2 + JSON 程序总结    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
ExtJs + Struts2 + JSON 程序总结    "http://struts.apache.org/dtds/struts-2.0.dtd"
>
ExtJs + Struts2 + JSON 程序总结
ExtJs + Struts2 + JSON 程序总结
<struts>
ExtJs + Struts2 + JSON 程序总结      
<package name="order" extends="struts-default">
ExtJs + Struts2 + JSON 程序总结
<action name="getAllOrder" class="orderAction" method="getAllOrder">
ExtJs + Struts2 + JSON 程序总结            
<result name="success" >jsondata.jsp</result>
ExtJs + Struts2 + JSON 程序总结        
</action>
ExtJs + Struts2 + JSON 程序总结      
</package>
ExtJs + Struts2 + JSON 程序总结
</struts>
        好的,看到jsondata.jsp了么,这里就是要放数据的地方,看看是什么吧!
/>
        是的,就是这么简单的一个代码!终于要到前台了,该露脸了,呵呵,前台代码最关键的也就是JS代码,那么我也就只贴JS了相信大家看过后都会自己弄清楚的!
);

相关文章: