摘要: 开源项目的一个好处就是能够任意的更改他人的代码为自己所用。最近有一个实验需要更改寄存的jar包,并且这个jar包还传递依赖到许多其它的jar包,并且这个jar包是一个拥有Tapestry目录结果的jar包。1 更改寄存的jar包这个比较简单,就是找到原代码,进行修改。但是因为是maven工程,所以需要有maven工程指定的结构。 2 传递依赖到许多其它的jar包这个也比较简单,找到原来的pom.xml,把除了本项目描述的地方之外全部拷进去。3 拥有Tapestry目录结果的jar包因为我们在启动服务器的时候,服务器会加载所有的项目的Module(只限于Tapestry),所以我们需要通知服务器 阅读全文
posted @ 2013-04-03 22:33 VoctrALs 阅读(203) 评论(0) 推荐(0) 编辑
摘要: Tapestry5自有的组件Select,对应着我们的HTML代码中的下拉列表。并且Select的Source对应着JAVA端的Enum数组或者是一个SelectModel对象。而Tapestry给我们提供的一个SelectModelFactory就是用来生成SelectModel的。一般情况下,我们制造一个List对象。然后 return SelectModelFactory.create(list, "someValue");即可。这里面的someValue并不是一个任意的字符串,而是一个List包含的对象的一个属性。这个属性的值被显示在HTML的select里面。 阅读全文
posted @ 2013-04-02 15:41 VoctrALs 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 前面按照别人的想法做了一个,这次按照自己的想法自己做了一个。tml如下 <t:form t:id="locale"> <t:loop source="LocalesSource" value="selectedLocale" formState="ITERATION"> <t:test server="currentLocale" client="${selectedLocale.locale.language}"> <img src 阅读全文
posted @ 2013-04-02 14:57 VoctrALs 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 这种实现方式挺奇怪,但是也确实不错。其tml核心部分为: <t:form t:id="locale"> <img src="${asset:images/country.png}" /> ① <br /> <input t:type="select" model="LocalesSource" ② encoder="localeEncoder" ③ validate="required" value="selectedLoc 阅读全文
posted @ 2013-04-02 14:52 VoctrALs 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 这里面有两个很值得注意的东西1 Model参数这个参数的指定可以有下面几种形式atml侧:t:model = "literal: Red, Green, Yellow"btml侧 :t:id= "someEnum" 不用t:model了就java侧: public enum someEnum{ RED, GREEN, BLUE }ctml侧:t:model = "someModel"java侧:List<Person> persons;@Injectprivate SelectModelFactory selectMode 阅读全文
posted @ 2013-04-01 15:05 VoctrALs 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 1 onActivate(Object ...)我们最好只是在这里设定Field的值,而不要添加其他的逻辑处理。因为onActivate方法经常会被调用到。2 @SetupRenderIs ideal for setting up objects and fields for display-only because Tapestry calls it only during a page render request.这里是一个理想的位置来设定仅仅用来表示用的Objects或者Fields的值。什么时候会产生一个Page Render Request呢?最基本的就是通过URL的传值。。。还. 阅读全文
posted @ 2013-04-01 13:43 VoctrALs 阅读(187) 评论(0) 推荐(0) 编辑
摘要: PersistenceConstants.SESSION有这个标志的属性,会被保存到Tapestry的Session里面。基本上任何程序都可以使用,但是不安全。PersistenceConstants.CLIENT拥有这个标志的属性的值被保存在客户端,是一个序列化的参数或者是一个隐藏的变量。它会生成一个类似于:/pageName?t:state:client=H4sIAAAAAAAAAD2OuwoCMRREry9UxMbGH7DOVlaWPkA2iOAXXNZrjGSTmFx8NLaW/og/ZG1tZ2VlbOzmDIdh7i9oHOsAUIkBcheUQI/FlgSjp8jhPBTaMgW 阅读全文
posted @ 2013-04-01 13:19 VoctrALs 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 由于Tapestry5的提交方式比较特殊,就是所谓的PRG(POST/REDIRECT/GET),所以在参数的传递上也会有些不同。据说一共有五种方法:1 By Activation Context:通过上下文。就是在一个页面中注入另外一个页面(@InjectPage),被注入的页面中有public的设定参数方法。在传入页面的java类中,需要有onPassivate和onActivate方法。其作用已经介绍过了。这种传值方式,会被传入页面处理,然后就和eventLink和actionLink一样了。提交到传入页面的时候,URL的样式像这样:http://hostname:portNumber/ 阅读全文
posted @ 2013-03-28 21:56 VoctrALs 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 这是一篇相对来说更加杂乱的文章了。基于最近的一个项目,把一些碰到的问题记下来。1 t:Output和t:OutputRaw他俩长得很像,但是差别不小。Output是一个至少要有两个参数的Component,分别为:value和format。Format就是java.text.Format。可以有两种方式来设定a,在页面中,如:format="literal:yyyy-MM-dd";b,在java类中声明,如:@Propertyprivate Format someFormat = new SimpleDateFormat("yyyy-MM-dd");tm 阅读全文
posted @ 2013-03-28 20:53 VoctrALs 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 首先说明一下,并不是每一个Tapestry项目的ApplicationModule都是AppModule,而是与这个工程的总的filter决定的。 <filter> <filter-name>app</filter-name> <filter-class>org.apache.tapestry5.TapestryFilter</filter-class> </filter> <filter-mapping> <filter-name>app</filter-name> <url-p 阅读全文
posted @ 2013-03-27 22:22 VoctrALs 阅读(380) 评论(0) 推荐(0) 编辑