风人园

弱水三千,只取一瓢,便能解渴;佛法无边,奉行一法,便能得益。
随笔 - 99, 文章 - 181, 评论 - 56, 引用 - 0
数据加载中……

ECP--之信息提示

        一般,系统中把提示信息保存在request中传递会页面,但是有些情况是redirect的,这样就导致了request失效。在ROR中,有一个scope是夸两个request的,不知道那个是怎么实现的。
        现在用session来代替这个东西,只是显示完成之后,就立刻清除这个数据。感觉比较挫,只能凑合着用了。
        每次新开发一个系统,如果不用现成的东西来做,都要搞很多很多东西,什么东西好像都要自己来,特别是页面上的东西,感觉挺烦的。写写js,改改css,调调table/div。感觉挺无聊的。
        总而言之,这样子都是因为这家公司的it部门太弱了,几乎没有一点技术积累,这么多年了,什么东西都没有留下,就留下了一堆垃圾,让我改的挺郁闷的。现在正在用自己的东西重新。有些东西又没法改,一些现成的组件也不一定能用,不能用的只能自己重新写一遍,来实现这个功能。

        作为一个技术部门,结果什么技术都没有,感觉挺悲哀的,特别是一个技术部门的老大,结果是个门外汉,被手下人看不起,这个也挺惨的,作老大做成这样,连死的心都有了,悲剧啊。

        作为一个技术部门的主管,可以不做技术,但是不能不懂技术。这样才能服众。

posted @ 2009-08-31 14:37 风人园 阅读(147) | 评论 (0)编辑 收藏

ECP--之弹出窗口解决方案(json传递)

        在应用中,弹出式窗口选择数据,这种解决方案是很普遍的。
        弹出窗口,有两种方式,一种是:showModalDialog,使用模式窗口,这种方式的好处有两个地方,一、可以直接返回数据,二、在最前面显示,避免用户误操作,窗口被遮蔽。
        但是这种方式个人感觉比较致命的地方就是因为这个是一个对话框,在form提交的时候只能新开一个页面(可能我没有发现其他的方式)。但是也有其他的方式,如加iframe,但是这样感觉页面太烦了,需要两个页面才能实现,比较麻烦。

        第二种:window.open,这种方式也有一个问题,就是会被当做广告拦截掉,还算不是很致命。
我的方案就是这个,下面上代码。
传递格式通过json,这样我可以自己定义需要回填那些域,返回值这边就是竟可能的完整。


/*
弹出窗口
endtarget: string 目标窗口
无返回
*/

function fopenWindow(endtarget){
    window.open( endtarget, 
"""left=0, top=0, width=800px, height=600px, scrollbars=1, resizable=1, menubar=0, location=0, status=0, toolbar=0, " );
}


/*
window.open的回调函数
根据传入的json格式,赋值相应的域值

cmp:string 域id
retval :json 所选行的数据
无返回
*/

function fopenCallback(cmp, retval){
    
    
//alert("call back start." + cmp);
    var obj = eval('(' + cmp + ')');
    
    
for(var e in obj ){
        
//alert(obj[e]);
        document.getElementById(obj[e]).value = retval[obj[e]]
    }

}


window.openCallback 
= fopenCallback;

/* 
获取url上的参数
返回:key value 对
*/

function GetUrlParms()    
{
    
var args=new Object();   
    
var query=location.search.substring(1);//获取查询串   
    var pairs=query.split("&");//在逗号处断开   
    for(var i=0;i<pairs.length;i++)   
    
{   
        
var pos=pairs[i].indexOf('=');//查找name=value   
        if(pos==-1)   continue;//如果没有找到就跳过   
        var argname=pairs[i].substring(0,pos);//提取name   
        var value=pairs[i].substring(pos+1);//提取value   
        args[argname]=unescape(value);//存为属性   
    }

    
return args;
}
            

/*
行双击方法,用户选择行数据。
通过回调函数,完成赋值,最后关闭窗口
rtnval: string 行数据
*/

function Dialog_onDblClick(rtnval)
{
    
//var rtnval = {prodId: prodId, prodName: prodName};
     
    
var args = new Object();
    args 
= GetUrlParms();
    
var cmp = args['cmp']
    
    window.opener.openCallback(cmp, rtnval); 
    window.close();
}


主页面 域id通过json字符串跟url传递后弹出页面
function popProductDialog(){
    var endtarget = "<%=path%>/bas/product.do?method=dialog";
    var cmp = "{a: 'prodId', b: 'prodName'}";
       //fshowModalDialog(endtarget, cmp);
      
       fopenWindow(endtarget+ "&cmp=" + cmp);
      
   }

弹出框
function Document_onDblClick(value1,value2)
            
{
                
var rtnval = {clientId:value1, clientName:value2};    
                    Dialog_onDblClick(rtnval);

            }
弹出页面解析获得域id,并通过循环域id从返回值中获取数据,并进行赋值。

这里唯一需要变的就是,弹出页面的返回值,可能因为需求的增加,需要返回更多的数据,或者就一次性将所有数据都作为json数据返回。

这样客户在调用的时候,只要域id不超出返回字段的范围,就可以正确使用了。

posted @ 2009-08-31 10:39 风人园 阅读(568) | 评论 (0)编辑 收藏

ibatis3中感觉比2不方便的地方


1、动态sql里面 原来的dynamic,现在没有了,只能用is代替。但是if里面的判断 没有isEmpty这种方便的标签,需要判断需要同时判断 null 和 ""。这个比较麻烦,希望能在正式版本中加上。

2、annotion方式的评价,个人感觉没有什么意义。从我来讲,用iBATIS的主要原因是因为要处理比较复杂的sql,所以通常sql都会很长,就是因为不想通过字符串的方式写在代码里,要是写在代码里,直接用hibernate的原生sql就好了,何必还要用iBATIS呢。sql写在xml里的好处是显而易见的,可以直接将调试好的sql从sql的编辑器中复制过来,这样可以省掉很多麻烦的事情,放在sql里面很长,又没有办法将格式弄好,要是换行什么的就更麻烦。

一个比较有用好的改进就是namespace了,这个功能以前在2.X想用一直没有用成。有了这个,很多通用的地方可以省略。

posted @ 2009-08-26 16:30 风人园 阅读(392) | 评论 (0)编辑 收藏

ibatis3及代码生成工具试用

        ibatis3现在还是beta版,但是已经可以很好的使用了。
        主要增强的方面有namespace这个东西,以前2的时候一直以为可以用的,结果没有效果,害我还郁闷了半天,这样以后就不会再有命名冲突了。
        然后就是annotion的支持,这样就可以不适用xml文件来保存sql了,但是感觉还是写在xml里面比较舒服,特别是比较长的sql,个人感觉。
        第三个就是动态sql的增强,增加很多有用的标签。可以让动态sql使用更加方便。
        在看完之后暂时感觉有那么几个比较好的改变,等正式版出来之后可能还有更多改进。

        接着讲下abator这个代码生成工具,感觉还可以,生成的sqlmap配置文件还可以用下,其他的就算了,还是自己手写吧。

        最后提到一下ibatis-3-migrations,这个东西暂时还没有看明白,好像是数据库schema的一个管理工具。正在啃guide,看看到底有什么好处,上次看有个人的文章说,就是因为没有这个东西才没有用ibatis,所以这个东东应该很强大,我要看下。

posted @ 2009-08-21 10:36 风人园 阅读(837) | 评论 (1)编辑 收藏

ECP--旧系统维护之感慨

        这几天再改老的EC系统,天啊,都快受不了了。我自认为我写的已经算丑的了,没想到有写的丑到这个程度的也是一绝啊,而且这个还是一家国内还有点名气的软件公司的产品(中科软sinosoft)。爷爷,当初是谁写的,帮我问候一下他家先人。害我现在这么惨,看那个代码,看了就想吐。
        只要我还在这家公司做着,一定把这个系统给换了,什么玩意啊。软件公司就知道赚钱,做出来的什么狗屁玩意。
        在这里发发牢骚,实在是有点受不了了,改这些破东西,累啊。shit

posted @ 2009-08-20 15:01 风人园 阅读(160) | 评论 (0)编辑 收藏

SpringSecurity见解

        对于入门来说,这个东西还是挺简单的,但是入门之后,这个事情还是挺复杂的。这里主要是看这个教程自己研究的http://www.family168.com/oa/springsecurity/html/index.html 
        对于那个helloworld,确实是挺好的,让人有了一个初步的认识。之后就是怎么把xml中的东西搬到数据库中的问题。这个过程中还是有很多小问题的,经常出现不能访问,访问错误,配置不生效等等问题。毕业也是第一次弄这个东西。也是在springside中看到这个东西,而权限控制模块也没有什么应用,所以就决定用这个试一下。
        试了一下例子,感觉确实不错 ,有很多功能都可以迎刃而解,剩下的问题就是怎么把那些小问题都搞清楚。
       现在一个比较麻烦的问题 就是资源的动态管理。新增配置只能在系统启动的时候才生效。网上说要把数据refresh()一下,但是不知道在哪里refresh(),不知道到底要刷新那个数据。还得研究一下。
        问题二、一个路径,如果没有加到资源的话,是不是应该叫匿名资源,这个资源是不是匿名用户也可以访问?

posted @ 2009-08-18 10:53 风人园 阅读(237) | 评论 (0)编辑 收藏

ECP--安全控制

        基础数据的操作暂告一个段落,基本上差不多,后面可能还有一些小问题,要修修补补,暂时不弄了,呵呵,典型的喜新厌旧型,弄多了就有点烦,下面开始玩权限。
        权限管理使用spring security 来进行,以前稍微看过,只是感觉挺复杂的,也没有怎么仔细研究,这次一定要用,就好好研究下。这样系统安全性才能有保障。
        毕竟是第一次使用,使用的过程中还是有很多的问题的。下面就是一些小问题,需要注意一下的。
 

1、 登录action/spring_security_login

2、 登出actionj_spring_security_logout (这两个actionspringSecurity自带的,直接用就可以了)

3、 Filter的配置,在项目中,跟struts2一起使用,filter的前后顺序有关系。Spring secutiry要放在struts2的前面,否则系统找不到securityaction

4、 怎么获取用户信息:可以参考springside中的实现org.springside.modules.security.springsecurity.SpringSecurityUtils。具体信息都在Authentication这个类中。

posted @ 2009-08-13 14:18 风人园 阅读(217) | 评论 (0)编辑 收藏

Ext.data.jsonReader的格式

在Grid和Form进行异步载入的时候,一般都是用json来进行返回,这个时候就需要注意格式的问题。jsonReader的格式是固定的,都是一样的
{"data":[{"spec":"aa","id":1,"name":"aa","helpCode":null,"code":"aaa"}],"success":true}
注意:data的数据是一个数组,不管是grid显示还是form显示,都是数组,只是grid有多条,而form就只需要一条而已,这个问题我也找了好一会儿。

从代码上看,grid和form调用的jsonReader是一样,怎么格式有点不一样,原来是这么个回事,两者确实都是一样的。

经过这次之后,对jsonReader有了更深的了解,只要是异步,用jsonReader就好了,一般的问题都能搞定。

特别是form的自己载入,这样可以省掉很多事情。

posted @ 2009-08-11 09:45 风人园 阅读(2271) | 评论 (0)编辑 收藏

ECP--Ext grid

周末的时候给项目从新想了一个名字,ECP,(电子商务平台),呵呵,自己陶醉用的。

今天的成果就是异步的grid实现,效果是不错。现在剩下按钮操作与grid的结合的问题。明天继续努力。

工作越来越烦了,该死的破老大,一点不懂,就瞎指挥,要不是回家没有地方去,早不干了。哎,继续努力吧。早日完成这个项目,走人:)

posted @ 2009-08-10 17:00 风人园 阅读(171) | 评论 (0)编辑 收藏

ECApp--产品主数据操作界面

        又经过了半天多的努力,总算页面基本操作都能实现了,下面就是完善操作及异常处理。
        在window&form的操作上有些小问题。
        还有就是grid的异步数据载入,暂时用array,下面考虑用json来异步实现。

继续看效果图


用ext做这种界面确实很爽,用户体验会很好,呵呵,我很喜欢这种淡淡的蓝,看着养眼,舒服。

posted @ 2009-08-07 15:01 风人园 阅读(196) | 评论 (0)编辑 收藏

仅列出标题
共10页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last