`
文章列表
在tapestry中,有两个特殊的组件:remove和content,remove组件表示在页面渲染的时候删除其包含的内容,而content组件表示在页面渲染的时候只渲染content组件包含的内容,具体的使用办法如下: <html> <head jwcid="$remove$"> <title>标题</title> </head> <body> .... </body> </html> <html> <head > <title>标题< ...
<html jwcid="@Shell" title="Phone book" sytlesheets="ognl:{assets.phoneBook,assets.foo,assets.bar}"> .... </html>

转换器

表单中的元素的值都是字符串,在tapestry中,需要将这些值和页面类中的属性进行绑定,而页面类中的属性不一定全部是字符串,例如有的是数字类型,有的是日期类型,所以就存在了转换的问题,需要在表单提交的时候将部分字符串转换为相应的数字或日期存放到页面对象的属性中,在tapestry中已经有了一些转换器,用法如下: 1.字符串和数字之间的转换 .page规范文件: <page-specification class="com.gwssi.Home">    <component id="weight" type="TextField ...
1.combo box组件 .page文件: <component id="stockId" type="PropertySelection"> <binding name="model" value="availStockIds"/> <binding name="value" value="stockId"/> </component> 2.DatePicker组件 <component id="qu ...
当在页面类中定义了抽象的getter方法时,在页面规范文件中(.page)可以不用定义页面属性了<property name="stockValue"/>,因为tapestry发现页面类中有没有实现的getter方法时,它会自定创建一个相应的属性的,但是在这种情况下没有办法给属性赋初始值的,想要给属性赋初始值,有两种办法,一个是在页面规范定义属性,并赋初始值<property name="stockValue" initial-value="IBM"/>,另一种办法是在页面类中用标记@InitialValue(& ...

默认前缀

在模板文件中(.html),默认的前缀是literal,例如: <form jwcid="@Form" delegate="bean:delegate" success="listener:doSubmit">     <input jwcid="userName@TextField" class="TextBox" value="ognl:userName"/>     <input jwcid="firstSubmit@Submit& ...
在tapestry中,由于每个页面都需要使用一个页面对象,为了提高系统的性能和节约资源,考虑使用对象池,即多个页面模板在渲染的时候可能使用的是一个页面对象,那么此时就可能出现用户A看见了用户B的数据,这个是绝对不允许的,存在信息的泄露,解决的办法是,实现initialize()方法,在页面对象放入对象池之前对属性数据进行初始化: public class Result extends BasePage {     int stockValue;     protected void initialize()     {        stockValue=0;     } } 这样每个页面模板在 ...
1.获取应用程序的虚拟目录名称   String contextPath=this.getRequestCycle().getInfrastructure().getContextPath()   返回的字符串为“/app” 2.获取和jsp中对应的request和response对象 WebRequest request=this.getRequestCycle().getInfrastructure().getRequest(); WebResponse response=this.getRequestCycle.getInfrastructure().getResponse(); ...
1.表单提交后的页面跳转   表单提交后的页面跳转有三种方法:   方法一:         public class Home extends BasePage         {             public void onOK(IRequestCycle cycle)             {                 cycle.activate("Result");             }         }   方法二:         public class Home extends BasePage         {           ...
在suse中设置环境变量的地方为: /etc/profile文件 例如设置java相关的环境,需要在“End of /etc/profile”这个字符串的前面加上: export JAVA_HOME=/usr/share/java-1.4.2 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar export PATH=$PATH:$JAVA_HOME/bin
摘要:Maven1.0已经历了几年的时间,并且作为Ant的替代品已被广大的开发人员所接收,但它并没有在很大程度使开发人员从Ant的 build.xml文件中解脱出来。Maven1.0速度慢并且笨拙,使用起来的困难度并不亚于使用Ant的项目。事实上,它的核心是基于Ant实现的。在经过了几乎彻底的重写后,Maven2.0诞生了。 一个Java项目中最困难的地方就是如何着手启动它。在启动项目之前,我们必须配置好所有的逻辑关系。比如,Java源代码应该放在何处?单元测试应该在何处进行?依赖的jar包应该如何放置?如何构建项目,如何形成文档,如何测试和部署项目?在这种情况下,开发人员不同的处理选择将会影 ...
在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再把它捡回来使用就不可能了。     但有时候情况并不这么简单,你可能会遇到类似鸡肋一样的物品,食之无味,弃之可惜。这种物品现在已经无用了,保留它会占空间,但是立刻扔掉它也不划算,因为也许将来还会派用场。对于这样的可有可无的物品,一种折衷的处理办法是:如果家里空间足够,就先把它保留在家里,如果家里空间不够,即使把家里所 ...
异步服务器端事件驱动的Ajax程序很难实现,也很难获得伸缩性。在Java+developers:" target=blank>作者的系列文章里,Plilip McCarthy展示了一个有效的方式:  Comet模式允许您push数据到客户端,而且Jetty 6的Continuations API让您的Comet程 ...
UNIX操作系统用cron守护进程来在特定的时间和日期运行脚本。Java Development Kit (JDK) 1.3的java.util.Timer类允许开发者设置每隔N毫秒执行一些任务,但没有类似cron的结构来指明一天或一周中的特定时间。   这个缺口现在被JDring包堵上了,它是Olivier Dedieu编写的一个Java的类似cron的日程安排提醒程序。JDring.zip文件中包含这些部分:   源代码:这不是必需的,可以不管它。   Javadoc文档:把这个放到你的docs目录中去。   Jar文件:这个文件包含编译好的类,要把它放到你的classpath中去。 ...
1.出了什么问题?       单元测试的目标是一次只验证一个方法,小步的前进,细粒度的测试,但是假如某个方法依赖于其他一些难以操控的东东,比如说网络连接,数据库连接,或者是Servlet容器,那么我们该怎么办呢?       要是你的测试依赖于系统的其他部分,甚至是系统的多个其他部分呢?在这种情况下,倘若不小心,你最终可能会发现自己几乎初始化了系统的每个组件,而这只是为了给一个测试创造足够的运行环境让它们可以运行起来。忙乎了大半天,看上去我们好像有点违背了测试的初衷了。这样不仅仅消耗时间,还给测试过程引入了大量的耦合因素,比如说,可能有人兴致冲冲地改变了一个接口或者数据库的一张表,突然,你那卑 ...
Global site tag (gtag.js) - Google Analytics