随笔分类 -  TAPESTRY

摘要:出处:http://www.blogjava.net/usherlight/archive/2010/01/06/308415.html与现在最流行的SSH相比较,Tapestry能够完全替代其中Struts2和Spring,但是他还是需要一个ORM的框架。IBatis由于比较低的学习曲线,也受到很... 阅读全文
posted @ 2014-06-19 11:20 VoctrALs 阅读(372) 评论(0) 推荐(0) 编辑
摘要:Tapestry用来对服务进行配置的方式对服务进行配置需要用到contribute,然后+serviceId。看一下代码:public static void arbitraryMethodName(MappedConfiguration configuration){ configurati... 阅读全文
posted @ 2014-06-10 10:50 VoctrALs 阅读(240) 评论(0) 推荐(0) 编辑
摘要:Advisor VS. DecoratorService Decoration is augmented withService Advice.Advisor: 跟Decorator相似,且普通,因为它作用于接口,在编译时根本就不会去考虑。Decorator: 在编译时,Tapestry就会知道哪一... 阅读全文
posted @ 2014-06-10 10:25 VoctrALs 阅读(149) 评论(0) 推荐(0) 编辑
摘要:Services可以在AppModule类中追加如下方法:public static SomeInterface build(){ return new SomeInterfaceImpl();}我们的方法可以使build,也可以是以build开头的方法,如buildSomething。还有一... 阅读全文
posted @ 2014-06-09 16:49 VoctrALs 阅读(331) 评论(0) 推荐(0) 编辑
摘要:一旦你已经开始使用Tapestry了,那么你就走上了一条不归路。。。Once you work in Tapestry there's no going back!Page或者Component里面的元素都是private类型的。@InjectPage,Tapestry是一个被管理的环境,我们不直接... 阅读全文
posted @ 2014-06-09 13:33 VoctrALs 阅读(641) 评论(0) 推荐(0) 编辑
摘要:文章摘自:http://blog.csdn.net/javaman_chen/article/details/9351237不得不说,人家总结的真好。。。1.Tapestry框架的加载是通过Filter来完成的,需要在web.xml中加入以下配置:[html]view plaincopyapporg... 阅读全文
posted @ 2014-05-11 14:05 VoctrALs 阅读(580) 评论(0) 推荐(0) 编辑
摘要:AppModule.java public static void contributeServiceOverride( MappedConfiguration<Class<?>, Object> configuration, @Local RequestExceptionHandler handler) { configuration.add(RequestExceptionHandler.class, handler); } public RequestExceptionHandler buildRe... 阅读全文
posted @ 2013-04-10 16:07 VoctrALs 阅读(200) 评论(0) 推荐(0) 编辑
摘要:Tapestry IoC容器从历史上来说,是从从HiveMind继承发展而来,但是HiveMind和目前大红大紫的Spring都不能满足Tapestry的一些特定的需求,所以全新开发了一套IoC的容器。其核心思想就是使用Java代码自身来解决依赖注入而不是由Xml之类的配置文件来完成,这和Guice的思想是非常相似的,Lewis也承认从Guice那里借鉴了不少。另外需要说明一下的是,Tapesty还从中国的一个非常古老但又充满哲理的游戏--围棋中借鉴了一些术语和思想。大意是围棋中经常要把棋子走的轻盈(Lightness),让每个棋子都能尽量地高效。编程也一样要轻量(Lightness)。IoC 阅读全文
posted @ 2013-04-10 15:02 VoctrALs 阅读(650) 评论(0) 推荐(0) 编辑
摘要:一个AjaxFormLoop控件需要指定source,value,t:id和encoder四个属性。source和value跟loop一样。而这个encoder必须要提供,因为它与addRow和removeRow有很大的关系。另外一个form是必须的。这里有几个注意事项1 removeRow对应着java端的onRemoveRowFromSomeId,而这个SomeId跟t:id的值是一样的。2 addRow同上,onAddRowFormSomeId。。。3 onRemoveRowFromSomeId方法的参数,为value指定的类型。。。而value的值为encoder的toValue的值。 阅读全文
posted @ 2013-04-08 21:07 VoctrALs 阅读(255) 评论(0) 推荐(0) 编辑
摘要:1参数source是GridDataSource类型的。一般情况下,source是一个List或者是一个Array,但是也可以是一个Explicit(不懂)。2empty参数可以指定当,source.size = 0时显示的内容。。。3可以指定初始化的时候按照某一个列来排序。代码如下:@InjectComponentprivate Grid grid;void onSetupRender(){ if (grid.getSortModel().getSortConstraints().isEmpty()) { grid.getSortModel().updateSort("s... 阅读全文
posted @ 2013-04-05 22:31 VoctrALs 阅读(223) 评论(0) 推荐(0) 编辑
摘要:void onPrepareFromSearchCustomers() { // Any setting up of editable objects or fields on this form should be done in here. } void onPrepareFromSearchSuppliers() { // Any setting up of editable objects or fields on this form should be done in here. } Object onSuccessFrom... 阅读全文
posted @ 2013-04-03 23:17 VoctrALs 阅读(161) 评论(0) 推荐(0) 编辑
摘要:<form t:type="form" t:id="names"> <t:errors/> <table> <tr> <td>First Name:</td> <td><input t:type="TextField" t:id="firstName" t:validate="required"/></td> </tr> <tr> <... 阅读全文
posted @ 2013-04-03 23:14 VoctrALs 阅读(201) 评论(0) 推荐(0) 编辑
摘要:在一个<t:form t:id="someId">...</t:form>中,存在一个<t:submit>的话,我们点击这个submit。那么java端会触发两个方法。1 onValidateFromSomeId(){...}这里一般是用来验证的,但是有时也会有一些其它的作用,譬如说转化错误或者屏蔽错误等。2 onSuccess(){...}这里当然就是需要进行的处理了。一般情况下是进行一个跳转,所以一般情况下这个方法的返回值是一个Object(stringKindPageName, PageName.class)或者是一个Link等。那 阅读全文
posted @ 2013-04-03 23:08 VoctrALs 阅读(165) 评论(0) 推荐(0) 编辑
摘要:开源项目的一个好处就是能够任意的更改他人的代码为自己所用。最近有一个实验需要更改寄存的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 阅读(206) 评论(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 阅读(165) 评论(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 阅读(225) 评论(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 阅读(280) 评论(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 阅读(204) 评论(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 阅读(191) 评论(0) 推荐(0) 编辑
摘要:PersistenceConstants.SESSION有这个标志的属性,会被保存到Tapestry的Session里面。基本上任何程序都可以使用,但是不安全。PersistenceConstants.CLIENT拥有这个标志的属性的值被保存在客户端,是一个序列化的参数或者是一个隐藏的变量。它会生成一个类似于:/pageName?t:state:client=H4sIAAAAAAAAAD2OuwoCMRREry9UxMbGH7DOVlaWPkA2iOAXXNZrjGSTmFx8NLaW/og/ZG1tZ2VlbOzmDIdh7i9oHOsAUIkBcheUQI/FlgSjp8jhPBTaMgW 阅读全文
posted @ 2013-04-01 13:19 VoctrALs 阅读(317) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示