`
yanhua
  • 浏览: 87642 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论
文章列表
在做项目时经常遇到客户要求把一个纸质的表单电子化,而且要求尽量和纸质的相一致。我们常用的做法是用HTML的table套table的做法,遇到复杂的表单就非常难办了。最近我们做的一个产品中是通过在可视化的IDE画线来把表单的框架画出来,其实运行时是用JS来化线实现的。虽然可能比用table套table的方式好了些,不过还是有些缺点的: 太依赖于IDE,离开IDE代码不好理解 画线操作不是很好用,即使用photoshop来画也不见得好画,何况一般的IDE要考虑转换成JS和HTML有很多限制,所以也做不了Photoshop那么强大 线框和里面的东西没有容器的关系,只是通过绝对定位定在那里,其实是互不 ...
spring3.0 M2发布了,可以到spring的网站上下载 。它带来了很多值得关注的新特性: 对java 5的全面支持。主要是很多接口开始支持泛型,加强了类型安全。核心部分的代码也针对java 5做了优化。 扩展了对并发的支持。 OXM模块从spring ws项目中移到了核心中。 崭新的RestTemplate。接下来还会写一篇关于rest的博客,值得期待。 Portal2.0支持。 开始尝试支持JPA2.0的一些特性。 下一个版本是M3,也是spring 3.0的最后一个milestone版本。在M3中会引入基于注解的工厂方法、声明是验证(JSR-303 "Bean Vali ...
设置RichFaces的皮肤非常的容易,只需在web.xml中指定一个参数: <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>ruby</param-value> </context-param>   有时候想要在运行时动态改变应用的皮肤,这样用户可以选择他们各自喜欢的皮肤并保存起来,下面给出一个方法。   首先用EL表达式来指定皮肤,而不是像上面那样硬编码: <context-param> <pa ...
require 'find' require 'fileutils' default_path = "." DIR = ARGV[0] || default_path count = 0 Find.find(DIR) do |path| if FileTest.directory?(path) and File.basename(path) == ".svn" FileUtils.rmtree path count += 1 end end puts "警告:成功删除了#{count}个目录!"
使用过JSF的人都知道,编写一个JSF组件是多么的复杂——tag类和tld、renderer、uicomponent……复杂的生命周期还有一堆的配置,真是让人望而却步。组件很难扩展是一个面向组件的框架的致命缺点,因为不管标准的组件库和第三方的组件库有多少多很难穷尽所有的需求。   更何况有时候我们只是想把几个已经存在的组件稍微组合一下或者加一些特定的约束就得到一个新的复合组件了,这个需求本来就很简单,但是你要定义自己的JSF组件就太复杂了,显得不值得了。以前最好的解决办法就是使用facelets了,不过JSF2.0中也提供了类似的功能,只要一个文件就搞定了。   加入我们定义一个输出组件,它输出 ...
JSF2.0 Public Review投票已经通过,除了apache投了反对票和少数几个弃权以外,其他专家组成员基本都投了赞成票。     虽然现在比较 关注REST和RIA,不过我还是很看好JSF2.0的。之前网上有个介绍JSF2.0新特性的系列文章,很不错,此外 Jim Driscoll's Blog 上给出了关于JSF2.0一系列很好的文章 ,有时间打算翻译一下。其实JSF2.0的参考实现已经可以用了,这个项目叫做Mojarra 。       下面是投票的结果:   SE/EE Apache Software Foundation ...
早上从Matt Raible的博客上看到AppFuse2.0已经全部开发完毕,正式发布了。AppFuse2.0使用了Maven作为基础进行开发,并且大量使用了java5的泛型和注释。AppFuse2.0要求使用java5+版本以及Servlet 2.4和JSP 2.0 (如果是使用JSF作为WEB层的话,JSP要使用2.1版本)。 AppFuse2.0新特性: 与Maven2集成 将原来的WebWork升级为Struts2 使用JDK5,注释,JSP2.0和Servlet2.4 支持JPA 使用泛型操作CRUD 完全支持Eclipse, ...
查看类是从哪个Jar包中加载的: java 代码   ProtectionDomain pd = MyCase.class.getProtectionDomain();   CodeSource cs = pd.getCodeSource();   System.out.println(cs.getLocation());   查找类在某个目录下哪个Jar包中: java 代码   package test;      import java.io.File;   import java.util.ArrayList;   ...
Tuscany是一个符合SCA标准的开源实现,他能够很容易地将一个服务绑定为一个Web Service: <composite name="Employee" xmlns="http://www.osoa.org/xmlns/sca/1.0"><service name="HelloWorldService"><interface.wsdl><component name="HelloWorldServiceComponent"><implementation.j ...
1、安装JRuby。今天发现JRuby已经发布了1.0.0RC1版本,可以到http://dist.codehaus.org/jruby/去下载。正确设置一个系统环境变量JRUBY_HOME指向解压后的目录,并把%JRUBY_HOME%\bin添加到系统环境变量PATH中。新建一个hello.rb文件: ruby 代码 puts 'Hello World.'   打开一个CMD窗口,切换到hello.rb所在目录,运行jruby hello.rb,在窗口中看到“Hello World.”了吧?--JRuby就安装好了。 2、安装AXIS。我在http://ws.apache.o ...
周末用了一天时间浏览了一遍《设计模式解析》这本书,其中很多观念令人耳目一新,根据作者反复提到的两条原则: 找出变化并封装之。 优先使用对象聚集,而不是类继承。 我突发奇想,对以前产品中的Dao部分做个简单的修改,当然,目前只是一个简单的设想。下面是以前的设计类图: 修改后的类图如下: 其实第一种方案中也实现了“找出变化并封装之”的原则,但第二种方案中对变化的把握更细致更精确。 表面上看,类的继承层次和数量并没有减少,但站在Dao的角度来看,优先使用了聚集,继承层次变得简单了。“优先使用对象聚集,而不是类继承”,有时候能够减少继承层次,有时则仅仅把 ...
1、闭包 闭包是很多动态语言提供的一个很方便的功能,它有点像Java中的内部类,不同的是闭包中只有一个方法,但这个方法可以有任意个参数。 java 代码   def closure = { param -> println("hello ${param}") }   closure.call("world!")   这段代码会输出”hello world”。 闭包用“{}”括起,“->”前面是参数,后面是处理语句,可以使用call调用,也可以在“{}”后直接使用“()”来执行。 闭包可以有多个参数,各 ...
最近在JavaEye上参加了两次讨论,《Grails is a breath of fresh air for Java developers》和《Java web开发你还会选择其他的框架吗?》,在Robbin的带领下两次讨论渐渐变成了对TagLib的大批判,总体来说大概有两种观点,一种是以Robin为代表的 ...
最近http://www.indicthreads.com/对Grails的创始人Graeme Rocher 做了一次访谈,其中谈及了Grails和RoR以及对动态语言的看法,从中可以看出开发者对Grails这个框架的立场和定位。 Graeme Rocher 说RoR中有一些他很不喜欢东西,比如说RHTML,但他也承认RoR确实是个好东西,当初要不是为了兼顾那些使用了Hibernate和Spring的老系统,他也早就用上RoR了。 Graeme Rocher对动态语言持一种比较保守的态度,他认为动态语言的确非常好,不过只适合简单的或中等复杂度的应用,在大型项目中完全使用动态语言--不管是Gr ...
Global site tag (gtag.js) - Google Analytics