Tapestry 4.0 使用简要
来源:互联网 发布:数据库通配符%表示什么 编辑:程序博客网 时间:2024/05/08 18:21
- 在page文件中声明属性,可以不必在java文件中声明以及其get、set方法
- t4默认getXXX()抽象方法中的XXX为页面属性,.page不用声明,并使用@InitialValue("value")赋初值.
- 页面对象实例会被缓存(有潜在非法访问问题),解决方法:
- 覆盖initialize()方法,初始化实例变量。(在放入缓存池时天会调用initialize())
- 在.page中声明实例变量,.java声明get/set方法(可有可无),t4自动生成代码初始化
- 实现PageBeginRenderListener接口,在页面render之前初始化参数,可防止空指针异常
- 禁止缓存参数
- -Dorg.apache.tapestry.disable-caching=true -Dorg.apache.tapestry.enable-reset-service=true
- 调试参数
- set JAVA_OPTS="-Dorg.apache.tapestry.disable-caching=true" set JPDA_ADDRESS=8000 set JPDA_TRANSPORT=dt_socket catalina jpda start
- .page不用任何声明,.java提供抽象方法和元数据
- .page中inject页面属性,.java中提供抽象方法
- 获得页面使用@injectPage("pageName")
- t4中若发现该类包含一个未实现的“getXXX”方法,会默认产生一个实例变量XXX。该实例变量没有初始化方法,可以在getXXX()声明@InitialValue("literal:initValue")解决
- delegate
- 方案1:打印出错信息需要new一个ValidationDelegate。
- 方案2:.page文件中配置<bean>标签
- 方案3:.page中不配置<bean>,抽象方法上使用元数据@Bean
- validators
- .page文件中每个需要验证的表单元素组件绑定一个validators
- 表达式:validators:+判断条件+[错误提示]
- 空输入问题
- t4默认空都可以验证通过
- 通过[value="validators:required"]来保证输入不为空
- Fieldlable可以与TextField绑定显示错误信息
- 客户端验证
- 在Form组件中绑定<binding name="clientValidationEnabled" value="true"/>
- 若表单输入验证正确,逻辑上的验证应该在监听方法中进行
- 例如:苹果库存只有20,用户买进50,这是非法的
- 验证时应向ValidationDelegate记录出错信息
- 创建delegate
- delegate.setFormComponent((IFormComponent) getComponent("XXX"));
- delegate.recordFieldInputValue(Integer.toString(XXXX));
- delegate.record("XXX must be >=0",ValidationConstraint.TOO_SMALL);
- t4中一个组件不能用两次,即一个jwcid不能在.html中重复出现
- 解决方案:组件重命名。<compoment id="rename" copy-of="name">
- 对每个button使用一个Form组件
- 给每个button添加一个“tag”,通过tag值判断which按钮be clicked
- 为每个button添加一个listener(简单、面向对象,推荐使用)
- 监听方法获得参数的方式
- 1、实现IRequestCycle会的监听方法的参数
- 2、声明带正确参数顺序的监听方法,t4自动boxing
- * public type method(parameters)
- * public type method(IRequestCycle cycle, parameters)
- * public type method()
- * public type method(IRequestCycle cycle)
- 页面提交后,t4会从页面pool重新获得或创建page object。因此提交前后同一页面的页面对象引用是不一样的,实例变量可能会一样也不可能一样。
- 因此不要在页面对象在定义成员变量(包括页面组件对应的成员变量),因为跨页面访问他们总是无效的有潜在危险。
- 上面问题的解决方案
- 1、使用客户端持久化需要访问的持久化成员变量,声明get、set抽象方法,用@Persist("client")注释。 使用时应判断get方法是否为null,因为这种持久化方式不会初始化变量
- 2、使用抽象get、set方法,由t4来实现。
- session对象可以在hivemodule.xml中配置
- hivemodule.xml存放于WEB-INF/classes/META-INF 目录下。或.jar文件的META-INF目录下
- hivemodule.xml每个模块的id必须唯一,一般以模块包名作为id
- 获得方式
- 1、声明抽象方法,通过元数据injectState("ObjectName")注释
- 2、声明抽象方法,在.page中<inject>对象
- 判断存在方式
- annotation
- 1、声明抽象方法,该方法命名格式为getXXX()或者isXXX()
- 2、使用元数据注释@InjectStateFlag("sessionObj")
- .page声明<inject type="state-flag" property="userExists" object="sessionObj"/>
- annotation
- 注销:使用Servicelink组件的restart service。该service删除sessionObj,并且从定向到首页。
- 1、关键性页面应该在页面中进行用户验证,防止匿名用户访问。页面对象实现PageValidateListener接口。
- 2、htmlA-〉login-〉htmlA方式解决方案
- 该页面类实现IExternalPage,该接口可接受参数
- 客户端保存参数(推荐)
- 1、使用Hidden组件,并提供该属的get、set方法实现
- 2、使用元数据@Persist("client"),不能够声明abstract的set、get方法
- session保存参数
- 默认表达式
- .html中为literal
- .page中为OGNL
- property access
- mathematical expressions
- method invocations
- reference static fields of public classes
- create new objects, including lists and maps
- URL中的sp,t3叫服务参数、t4叫监听参数
- page对象查询
- 1、.page中声明
- 2、在.application声明org.apache.tapestry.page-class-packages中查找(推荐)
- 特殊页面组件
- 1、$remove$,删除该html元素(即仅去掉某元素)
- 2、$content$,只生成该元素标签间的的html code, 该元素以外其它元素忽略去掉(即仅保留某元素标签内的内容)
- html中使用技巧
- 1、<span key="hello">Hello</span>指名说用字典key
- 2、必须为<span>标签,且key自不必加前缀(如message:,OGNL:)
- 不同地区的页面风格,以XXX_CN.html这种方式命名
- 字典文件
- 1、每个page可以拥有一个poperties
- 2、在WEB-INF下建立${servletname}.properties,所有page共享
- 组件配置文件推荐最合理是放在WEB-INF下
- contrib中的控件的使用
- <library id="contrib" specification-path="/org/apache/tapestry/contrib/Contrib.library"/>
- input校验
- 推荐使用writer.beginEmpty("input")
- 使用writer.begin("input")和writer.end()
- rewinding(重绕),可以理解为刷新
- form.isRewinding()
- cycle.isRewinding()
- 参数
- 组件参数初始化
- .jwc中<parameter>设置初始化
- finishLoad()方法中初始化
- 参数类型
- formal:是被定义在组件规范中的组件参数。每个formal parameter有一个特定(区分大小写)的名称,并且被标为required或者optional。
- informa:是Html元素的属性参数。
- 组件参数初始化
- 绑定方式
- 1、静态绑定:即只读,绑定的值在组件规范中指定
- 2、动态绑定:组件需要的时候,动态绑定通过其指定的JavaBean获得值
- Tapestry 4.0 使用简要
- 使用tapestry-prop提高Tapestry运行效率
- 使用tapestry-delegate提高Tapestry运行效率
- 使用tapestry-prop提高Tapestry运行效率
- 使用tapestry-delegate提高Tapestry运行效率
- 使用tapestry-prop提高Tapestry运行效率
- 使用tapestry-delegate提高Tapestry运行效率
- tapestry restful架构使用
- 开始使用Tapestry
- 结合Hibernate使用Tapestry
- Tapestry
- Tapestry
- Tapestry
- Tapestry
- Tapestry
- Tapestry
- Tapestry
- Tapestry
- 个性主张:玩转你的86400秒
- ASP上两个防止SQL注入式攻击Function
- FreeBSD+Apache+PHP+Mysql快速安装
- Eclipse快捷键
- 看看你多大了
- Tapestry 4.0 使用简要
- ref和out 转贴
- JBOSS4.0 JDBC数据源配置大全(一)
- 今天在网上发现一个不错的软件外包的网站
- JBOSS4.0 JDBC数据源配置大全(二)
- 一家之言
- 安全套接子编程
- 破解SQL Server连接错误-“用户xx登录失败,原因:未与信任 SQL Server 连接相关”
- 博客中国被黑了