ExtJS5 整合Spring4之一

原型组成及环境搭建

ExtJS是优秀的前端RIA组件,ExtJS5采用了MVVM模型,它在MVC的基础上引入ViewModel抽象, 实现了在View和Data之间的双向Bind,程序员不需要再关注界面field与数据的双向更新。 在MVVM模型之下,可以轻松实现对数据的CRUD,前端界面通过OOP机制实现最大程度的组件派生和复用。 对于一致性的操作方式,甚至可以对Controller逻辑大量复用,程序员只需要将关注点放在特殊界面逻辑。

 

 美中不足的是:Sencha官方并没有提供一个可供java使用者快速搭建应用的服务端原型。 本例是从一个实际项目抽取的快速搭建ExtJS+Spring的原型。

本原型包括为前端应用和后端应用,

前端项目:

http://git.oschina.net/chen4w/es

后端项目:

http://git.oschina.net/chen4w/se

功能说明

-----------------------------------

本App是使用Sencha Cmd v5.1.2.52,按照sencha官方教程建立,

  参考文档:https://docs.sencha.com/extjs/5.1/getting_started/getting_started.html

  为了接近实际项目需求,主要引入了以下功能:

  1. 主界面布局及调度模仿了:kitchensink <http://dev.sencha.com/ext/5.1.0/examples/kitchensink/

  2. MVVM的文件目录组织及Simdata前端仿真模仿了:ticket-app <http://dev.sencha.com/ext/5.1.0/examples/ticket-app/index.html>

  3. 按照你国用户的使用习惯,扩展实现了更省地儿的grid filter控件:<http://chen4w.iteye.com/blog/2210313>

  4. 详细页的界面组织,提供了一个公用的支持导航滚动的基础类:<http://chen4w.iteye.com/blog/2197060>

 

快速开始

-----------------------------------

本例支持SimData方式的前端Restful仿真,在此种方式下,Restful交互被前端的代理层接管,不需要后台服务提供Restful实现。

SimData可仿真CRUD界面交互,在后台Restful未实现时,就可以让用户看到最终界面的操作细节。

在沟通的过程中不断改进界面,而后台的Restful实现则可独立开发,不需要参与用户讨论。

将本例代码的master分支下载到本地的http server的主目录下,

打开浏览器并访问:<http://localhost/es/web/>  即可。

预备开始

-----------------------------------

如果需要修改前端代码,某些改动是需要借助Sencha Cmd来build的。

关于如何安装Sencha Cmd,请参阅:<http://www.sencha.com/products/sencha-cmd/download/

我的调代码的习惯是:

  •   在终端方式下,进入:  ../es/web 目录下,键入 sencha app watch 命令,让sencha cmd监视代码修改,自动build
  •    默认设置下,extjs会在每个请求的文件加动态时间戳以避免缓存,但这种机制会导致你设置的断点失效,在url中加入参数 cache=true,可避免此问题, 即: <http://localhost/es/web/?cache=true>

正式开始

-----------------------------------

本小节的目标是在本地建立ExtJS整合Spring的开发环境。由于服务端是以SpringSide4的QuickStart为蓝本的。

因此预备环境要求同SpringSide4,我采用的环境是:Mac Capitan下:JDK8 + eclipse Luna + Jetty8.1。

另外别忘了jetty for eclipse插件:<https://wiki.eclipse.org/Jetty_WTP_Plugin/Jetty_WTP_Install>

准备好开发环境之后,下载:<http://git.oschina.net/chen4w/se>,通过maven project或existing project方式引入均可。

需要特别说明的是:

  •   es项目的代码请切换到springside分支(其实只有3行代码差异)
  •   Jetty8 Server需要定义如下截图的web上下文(不要采用默认上下文)。

  其中 /Users/chen4w/Sites/es 即你的之前放在httpserver主目录下前端代码所在目录,<br>

  这个上下文定义要求jetty在它的上下文中引用该目录,从而使得es可在jetty下被访问,避免了跨域问题。



 

  •   保存上下文设置,右键*se->Run As->Run on Server*, 当Spring引导启动完成之后,<br> 
  •   浏览器访问:<http://localhost:8080/es/web/>, 会出现登录界面,初始用户名/密码: admin/admin

界面截图

-----------------------------------

用户登录:


分页grid:



 

文本检索:



 

日期检索:



 

支持导航滚动的详细页:



 

重复性验证:



 

License

-----------------------------------

本项目包含了Sencha ExtJS GPLv3代码:

<https://www.sencha.com/legal/gpl/>

猜你喜欢

转载自chen4w.iteye.com/blog/2268310