`
yuanqixun
  • 浏览: 58053 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于Ext+Struts2的整合案例-Ext学习之路之-入门

阅读更多
最近项目开发,打算使用Ext作为表现层,不想让开发人员花太多的时间去书写枯燥无味的jsp标签,故打算采用Ext作为表现层的解决方案,控制层,我采用了Struts2来替代。本人对Ext的各个组件不是很熟悉,也就是最近2天看了相关的demo和Javaeye上的帖子,特整理了一个可执行的工程出来。很简单,主要是为了阐述如何实现二者的通信机制而已。如果有时间,再慢慢完善。

其中有几个点需要说明一下:
1、采用JavaEye一位网友的建议,采用JsLoader来加载相关的资源,但这里,需要注意文件资源的路径问题,否则将出现Ext未定义等错误。我该写了JsLoader的方法,增加了getContextPath()方法到那个stripExternalRef()返回之前。
 /**
   * get the application's context path
   * @return {}
   */
  this.getContextPath=function() {
  var contextPath = document.location.pathname;
  var index =contextPath.substr(1).indexOf("/");
  contextPath = contextPath.substr(0,index+1);
  delete index;
  return contextPath;
}
// 在stripExternalRef返回前,强加这个上下文路径

  /**
   * Strips out any double slashes, double dots, or cross domain references.
   * @param s string
   */
  this.stripExternalRef=function(s){
    var exprs = [/\.\.+/g,/\/\/+/g,/\\\\+/g,/\:+/g,/\'+/g,/\%+/g];
    
    // If it's hosted, we relax the protocol related regex
    exprs = [/\.\.+/g,/\\\\+/g,/\'+/g,/\%+/g];
    
    if (_remote)
    
    for(var i=0; i<exprs.length; i++)
      {
	s = s.replace(exprs[i], '');
      }

    return this.getContextPath()+ s;
  }

以上方法,也是google上翻了好久才拿到的,习惯了google的拿来主义。

2、注意GridPanel中关于root属性,他这个属性的意思就是说,你必须指明你的Json返回的串中,网格数据对应的key,在这里我们的网格数据对应的对象是
List<Person> persons;
所以就是
reader: new Ext.data.JsonReader({
		    totalProperty: 'total',
		    root: 'persons',
		    successProperty :'success'
		}, [
		    {name: 'id',mapping:'id',type:'int'},
		    {name: 'sex',mapping:'sex',type:'string'},
		    {name: 'name',mapping:'name',type:'string'},
		    {name: 'descn',mapping:'descn',type:'string'}
		])
了,我们可以使用JsonPlugin的注释来更改json串的相关key值。

呵呵,第一次发贴,明天请假,今天熬夜把这个问题解决,明天给公司的兄弟一个交代。哈

好了,改天对ext有更多的认识,也慢慢发上来,太晚了,儿子都睡啦。睡觉去咯。
1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics