平平庸庸

extjs4 springmvc hibernate(jpa) 项目中的一些笔记1

上一篇 / 下一篇  2012-12-12 10:46:54 / 个人分类:java

一、前端

a) 所有类名: 首字母大写 后接 驼峰规则

b) 所有字段名:首字母小写 后接 驼峰规则

c) Model:同所有此类名

d) Store::同所有此类名[chartstore时加Chart]

e) Control:同panel

f) Panel:管理对象类名+Panel

g) Grid:管理对象类名+Grid

h) Form:管理对象名+Form+[Add/Modify]

i) Id:同本类名

j) 请求:管理对象名+Controller?+[create/read/update/destroy]

Eg:

                    create: 'postController?create',

                    read: 'postController?read',

                    update: 'postController?update',

                    destroy: 'postController?destroy'

k) Reader.root:rows

l) reader.successProperty:success

m) Store.Pagesize100

n) 无需分页的 store.pagesize:1000000

o) String 长度限制 50name) 200desc

p) 动态刷新用taskmanager 做轮询。动态刷新的grid不待编辑功能

Eg

    userTask: {

        run: function(){

        console.info("find component test-------------111111-");

        

                Do somthing

                

            }

        );

 },

   interval:100000    

  },

。。。。。。。。

Ext.TaskManager.start(this.userTask);

Ext.TaskManager.stop(this.userTask);

q) 简单对象管理全部依赖gird直接完成

r) Selector 帮助记忆:

i. #postmanagement 定位idpostmanagement component

ii. 大挂号中添加条件 

s) Ext.grid.view    loadMask false store load时 不显示mask。在自动轮询的grid中这么实用比较好

t) 按值改变grid中行显示显色的方法

                var girdcount=0;

                for(r in records){

                    console.info(records[r].data.status);

                    if(records[r].data.status==0){

agentStatusGrid.getView().getNode(girdcount).style.backgroundColor='#FFFF00';

                    }else if(records[r].data.status==1){

agentStatusGrid.getView().getNode(girdcount).style.backgroundColor='#FF1493';

                    }else if(records[r].data.status==2){

agentStatusGrid.getView().getNode(girdcount).style.backgroundColor='#DCDCDC';

                    }

                    girdcount=girdcount+1;

                } 

                

(上面这个方法在extjs4中不行)

下面是改变字体颜色的方法

columns: [ 

                { 

                    dataIndex: 'alarm', 

                    text: '报警状态', 

                    renderer:function(val){ 

                        if(null!=val) 

                        return "<p style='color:red'>"+val+"</p>"; 

                        else return val; 

                    } 

10                 }, 

u) Extjs 自动的idgenerator 用起来不对,sequence的会产生空重复字段,uuid的回产生空字段。所以用mysql自动生成主键。在storewrite方法中添加load方法,使得提交后自动把生成的字段信息load下来。

Extjs 笔记 

1parseInt()  字符串转数字

2、Combox 主动发起 load store的时候有bug(麻痹的肯定是个bugload的时候把value冲掉,需要点两次才刷新的出来)。绕开的办法只能是在目标的storeload时间中加入combobox.setValue方法。并且comboboxquerymode要选择local。并且在beforequery中添加load方法。才能做到每次吧变化的数据load进来并且没有bug

需要注意的是要通过columngetEditor来获得combobox。不然可能要获取的时候combobox还没有生成。

看起来storeautoload配置的确是要去掉。不然的话的确是碰到了很多的莫名其妙的问题了

上面的解决方案不是最好的。这的确是4的一个bug。这个bug的另一面是当comboboxstoreload之后mask 永远都显示在哪里。解决方法是

Ext.override(Ext.LoadMask, {

     onHide: function() {

          this.callParent();

     }

});

总结一下就是,localquerymode。加自动load。然后加上上面这个override。然后不必为每个combobox定义自己的store就是目标实体的store就好了。要刷新的时候load一下目标store。或者在目标storewrite事件上每次load。这是现在的做法

另外要将comboboxforceselect选中,以限制用户不能所以输入。同事避免出现html code在输入框中的bug

3、麻痹的model主键不能太长,不然读不出来。有一个低能的bug

4、Ext.application 中的views 没啥用。

5、一对多关联的时候,关联字段服务端用set 客户端用int array。在fieldtype就是auto。有个问题当这个字段没有值的时候auto出来的是“”字段串,需要在此字段的converter中加上

if(v==""){

    return new Array();

}

return v;

6、Jpa只能有一端维护关系。虽然看上去manytomany的注解。其实一样的。加了mapedby的那段不能维护关系。

1、多对多关系中一般不设置级联保存、级联删除、级联更新等操作。

  2、可以随意指定一方为关系维护端,在这个例子中,我指定Player为关系维护端,所以生成的关联表名称为: player_game,关联表的字段为:player_idgame_id

  3、多对多关系的绑定由关系维护端来完成,即由Player.setGames(games)来绑定多对多的关系。关系被维护端不能绑定关系,即Game不能绑定关系。

  4、多对多关系的解除由关系维护端来完成,即由Player.getGames().remove(game)来解除多对多的关系。关系被维护端不能解除关系,即Game不能解除关系。

  5、如果PlayerGame已经绑定了多对多的关系,那么不能直接删除Game,需要由Player解除关系后,才能删除Game。但是可以直接删除Player,因为Player是关系维护端,删除Player时,会先解除PlayerGame的关系,再删除Player

7、Hash fregment 就是url中包含#号后面的部分。这部分的东西不会发起request请求。是给页面中的js用来的做state转换用的。获得hash fregment的方法就是document.location.hash

Eg

Ext.onReady(function() {

Ext.MessageBox.alert('alert',document.location.hash);

});

8、Extjs4 request 对象中加入 afterRequest( request, success )。以获取请求成功与否。


TAG:

 

评分:0

我来说两句

Open Toolbar