风人园

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

ECApp -- 之系统初始化

在java web项目中,最常用的就是使用listener来实现初始化了。

下面是实现代码
 1 public class StartupListener extends ContextLoaderListener implements
 2         ServletContextListener {
 3 
 4     private Logger logger = LoggerFactory.getLogger(getClass());
 5     
 6     /**
 7      * web容器启动时调用
 8      */
 9     public void contextInitialized(ServletContextEvent event) {
10         logger.info("application servlet initialized");
11 
12         ServletContext context = event.getServletContext();
13         
14         //从spring中获得bean,由这个bean进行相应操作,结果存到context中
15         ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(context);
16         ProductClassManager productClassManager = (ProductClassManager)ctx.getBean("productClassManager");
17         
18         String prodClassTreeJson = productClassManager.generateProdClassTree();
19         
20         context.setAttribute(Constants.PRODUCT_CLASS_JSON_STRING, prodClassTreeJson);
21     }
22     
23     
24     /**
25      * web容器销毁时调用
26      */
27     public void contextDestroyed(ServletContextEvent event){
28         logger.info("application servlet destroyed");
29     }
30 
31 }
        这里面还调用 了spring的bean,所以listener要配置在spring的那个listener下面,否则可能出错。

这样我们就可以在系统启动的时候将一些常用的数据及配置信息都放到内存(即serlvetContext里面),在struts2中,我们可以通过这种方式获得
ServletContext context = ServletActionContext.getServletContext();
然后就可以使用存放在context里面的数据了。
就这么简单。

posted @ 2009-08-06 15:40 风人园 阅读(213) | 评论 (0)编辑 收藏

ECApp--ext应用之我见

        以前做项目的时候也使用过一段时间的ext,但是总体来说,在使用的过程中有蛮多不习惯的地方,后来除了几个布局界面使用ext之外,其他的全部又替换为html了。
        这次项目,再次使用ext又有了新的感觉,总的来说,ext还是非常的好(这个是废话)。css风格是我比较喜欢的那种,非常的耐看,不会看厌。各种组件丰富,只要你能用的起来,还是非常好的,一个应用下来,整体操作非常的爽。
        有一个不爽的地方就是在编写的时候 ,多一个少一个逗号就玩完,这个比较郁闷,但是注意一下就好了。
        下面暂时show一下程序的主体页面,只能说基本完成,还没有完全弄好。
        今天把页面及tree给弄好,明天把中间的grid及相关的几个编辑form弄完,在完善一下相应的按钮操作,就完工了,哈哈。拿出去给人看都是眼前一亮。good,继续努力ing

posted @ 2009-08-06 15:02 风人园 阅读(161) | 评论 (0)编辑 收藏

ECApp--产品主数据管理界面及产品选择方案构思



1、管理界面
        对于一个ERP系统来讲,产品数据是最重要的,而且也是操作比较频繁的。所以界面一定要要友好。
在c/s中,一般是这样处理的,左边树形结构显示分类,右边产品数据,提供查询定位功能。
所以在这个系统里,我也想使用类似的界面,这样直观且方便。

        在这个界面上,提供对产品类别 & 产品数据的操作。
        在树形结构上操作产品类别,操作有:新增类型,新增子类型。
        产品数据:新增(需要先选择类别)、删除、修改、查找、定位等。

2、产品选择
        在整个系统中,产品选择使用是最为广泛和频繁的,所以一定要提供多种选择操作,满足用户的操作需要,方便用户产品需要的产品。
    1)、弹出式选择对话框
    2)、下拉式(自动匹配建议)
    3)、多选输入(减少操作次数,这个很重要)

上面这些看能否用ext实现。
本来想使用jquery.treeview来做,但是好像有点问题。看来只能用ext的东东来做tree了。
那个自动匹配的下拉菜单,估计要自己来手工打造了,已经找到了类似的源代码,自己做吧。
哦:)

posted @ 2009-08-05 15:22 风人园 阅读(262) | 评论 (0)编辑 收藏

java中文注释在eclipse中显示乱码的问题

这个问题困扰已久,一直没有空查,今天终于查了一下,呵呵,总算看见那个久违的汉字了,高兴啊。

原文请看这个论坛帖子 : http://www.javaeye.com/topic/100391

解决方案:
Preferences General > Workspace 修改Text file encoding
为UTF-8后才行。这个问题一直琢磨了好久,今天下了决心想看看,最后还是查了eclipse的帮助才解决。

当当修改project 为UTF-8是不行的。


就这么回事,我一直改项目的那个,怪不得。

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

ECApp 项目说明

在此记录开过过程及问题处理,便于浏览查询。
ECApp是一个web版的进销存系统
模块有系统模块,基础模块,采购管理,销售管理,仓库管理,应收应付等。

在web版的基础上,计划再开发一个RCP版本的。web的主要用于查询分析。RCP用于数据操作。

这样B/S,C/S的特点都能发挥出来。


在公司工作也不是很累,有很多时间做开发,给自己点事情做作,免得人都荒废了。这样人累点,但是充实,给人的精神感觉也好。让人有个希望,有个目标。

现在在完成基础模块的东西,整体架构

Struts2 + spring + hibernate + ibatis

数据库任意,现为sql server 2005

争取以后改为ERP,有机会的话,可以拿出去卖卖,哈哈

给自己一个目标,年底前完成,加油吧,兄弟。

posted @ 2009-08-04 16:39 风人园 阅读(227) | 评论 (0)编辑 收藏

struts2 表单属性映射的问题

最近使用的过程中,有点搞不懂,表单域跟属性到底是怎么个关系,因为有时候可以,有时候又不行。有点小郁闷。

使用新东西的时候或多或少会出现这样那样的问题,这导致很多人不愿意更换原来的框架,一换又要学一个大堆东西,处理一大堆异常。但是我们这些做开发的,不学习使用新的 东西,就会被淘汰。这个行业的悲哀啊,当初也不知道怎么选择了这个行业。

以上是题外话。

表单映射,在2里面有两种方式,一个事modelDriver,直接映射到model里面。
另一种方式就是通过属性来影射,通过getter和setter方法来获取和设置值。

现在出现问题的在第二种情况,设值后,传到页面,页面没有得到值,这个不知道什么缘故,感觉有可能是页面转发的问题。这个还要好好看看资料研究一下。

:)

//==========================================================================
2009-11-17
好久以前的问题了,今天终于有了答案,原来都是ValueStack惹的。其实也怪自己,一直没有空把struts2的原理好好的看看,还以为跟以前的东西一样呢。

问题是这样的,在action里定义了属性之后,数据都是存在ValueStack里面的。如果你直接使用tag取的话就没有问题。但是你想通过java代码,用request取的话,这样是取不出来的。

今天终于发现了这个问题的原因。
这些属性可以通过request取,但是首先要去的ValueStack,然后从ValueStack里面把这个值取出来。
如:
ValueStack vs = request.getAttribute(struts.valueStack);
然后根据属性名称,从vs中获取这个对象值。
vs.find("value");

这样就可以把数据取出来通过java代码来操作了。否则只能使用struts2自带的tag来运行。

这个是今天的一大收获。

posted @ 2009-08-04 15:52 风人园 阅读(1078) | 评论 (0)编辑 收藏

jquery.treeview

今天用到tree,试了下jqeury的这个插件,结果发现一个问题。
效果是出来了,可是没有单击事件,这让我们怎么用啊。真是纳闷死了,看文档也没有这个说明,看demo里面也没有这个例子。

好像其他的官方插件也或多或少有这样那样的问题,看来官方的插件还需要努力更新啊。

难道我要自己动手完成这个东东了?

js一直是我的软肋,郁闷死。

现在碰到复杂一点的js,根本没辙。特别是现在oo版本的js,基本上属于看不懂,看来我需要研究一下了。

posted @ 2009-08-04 13:47 风人园 阅读(681) | 评论 (0)编辑 收藏

hibernate annotion 注解放在属性上或者方法上

两种方式都是可以,但是看人家的代码,习惯将注解放于方法上,不知道有没有什么好的地方?

现在唯一发现的区别就是,@Transient非持久化域的不同。
放在方法上,只需要标记那个getter方法即可,可以没有对应属性。

如果放在属性上,需要生成getter 和setter方法


在实体对象中,可能存在很多非持久化方法,这种情况下
注解置于属性上,功能性get方法,可以没有对应属性。
注解至于方法上,直接使用@Transient。

两者基本上都一样。
只是在使用的时候不能混合使用

posted @ 2009-08-04 09:54 风人园 阅读(1505) | 评论 (0)编辑 收藏

Hibernate annotion配置

在这里,记录一下annotion在实际使用过程中一些常用的配置。

1、一对多
2、一对一

常见异常及处理
1、Could not determine type for: java.util.Set
说不能找到这个类型,无法创建列
原因:annotion不能同时放在属性和方法上,要么都放在属性上,或者都放在方法上

posted @ 2009-08-04 08:52 风人园 阅读(414) | 评论 (0)编辑 收藏

OperaMasks学习系列(三) 数据验证(原创)

1、简单验证
   
  • @Required. 声明一个域或Bean属性必须具有输入值。

  • @ValidateDoubleRange. 检验一个浮点数取值是否在指定范围中。

  • @ValidateLongRange. 检验一个整型数取值是否在指定范围中。

  • @ValidateLength. 检验一个字符串的长度是否在指定范围中。

  • @ValidateRegexp. 检验一个字符串是否可以匹配指定的正则表达式。(OperaMasks提供了一个工具类org.operamasks.faces.validator.CommonRegexpPatterns,列出了一些常用的校验正则表达式)

2、服务器端验证

3、自定义验证错误信息

4、客户端验证   
    设置form 的属性:clientValidate="true"
    通过此标签自定义客户端验证
    <ajax:clientValidator message="用户名不能为w">
        嵌入javascript代码
    </ajax:clientValidator>

posted @ 2009-06-17 13:32 风人园 阅读(312) | 评论 (1)编辑 收藏

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