Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7583130 建立时间:2006年5月29日 |

| |
[Tapestry]Tapestry中配置文件page的简化处理 软件技术
lhwork 发表于 2006/7/11 17:54:20 |
Tapestry每个页面基本上都需要一个.page的配置文件,因为需要对模板HTML的动态内容部分进行配置,这是为静态页面和动态内容更好的分工,确实需要这么做。
但是,每个page文件的典型配置如下:
<page-specification class="...">
<property...>
<bean name="delegate" ...>
<component ...>
<asset ...>
</page-specification>
其中<component...>部分我觉得是必须的,HTML上输入域只需要增加一个jwcid=...即可,其它配置写入page文件中较好。
<property...>部分作者文档推荐这么做,这一部分也可以写入page中; |
|
[Tapestry]Tapestry的数据校验功能-修改框架初试 软件技术
lhwork 发表于 2006/7/11 17:53:34 |
上篇文章的做法,不需要修改tapestry框架,但是前端javascript的校验功能丢失了。可以满足只需要后端校验的需要。
本文对“配置一次,前后都用”的理想模式进行实现,经测试表明成功了!
1,需要修改以下几个类和文件: Body.java
Form.java
AbstractSubmit.java
Submit.java
ImageSubmit.java
Submit.jwc
ImageSubmit.jwc
BaseValidator.java
MinLength.java
......
2,增加BasePage的子类:
SubBasePage.java,其中增加一属性submitName,保存提交组件的名字,用以各validator根据提交组件的名字决定是否需要进行校验。
3,page中对各个输入组件配置validators时也发生了变化:
如,minLe |
|
[Tapestry]Tapestry数据校验-修改各Validator 软件技术
lhwork 发表于 2006/7/11 17:52:58 |
1,BaseValidator的修改非常简单,增加了一个submitName属性及其getter和setter。用于保存校验器适用的提交按钮的ID。
// whether skip this validator
public boolean isSkipValid(IFormComponent field) {
IPage page = field.getPage();
return (page instanceof
XtradeBasePage && this.getSubmit |
|
[Tapestry]Tapestry数据校验-修改Required Validator 软件技术
lhwork 发表于 2006/7/11 17:52:30 |
Required的修改遇到麻烦事,因为BaseValidator有一个方法isRequired,这样增加一个属性required的getter和
setter,page文件中设置required=searchId时,总是去匹配isRequired方法,这样出现字符串转换为布尔型错误。
为了对其它校验器不产生影响,我增加了一个校验器Required2,配置时required2=searchId。
同时,required类型的校验器本来不需要参数,所以现在参数值就是提交按钮的ID,因而可以使用BaseValidator的submitName属性。代码如下:
public class Required2 extend |
|
[Tapestry]Tapestry存在多个提交按钮时设定按回车键动作的方法 软件技术
lhwork 发表于 2006/7/11 17:51:56 |
浏览器的两个默认处理:
1,当表单存在多个提交按钮,用户按下回车键,浏览器默认是提交左上角那个按钮;
2,如果在javascript中document.forms[0].submit()则同样提交表单,但不传递任何提交按钮的信息。
用户可能会要求设置一个默认提交按钮,而不是浏览器默认的动作。如果用户在页面上按回车键,则相当于点击其中一个提交按钮。
本文提供了解决回车键提交问题(兼容Firefox和IE)的办法。
1,首先提供了javascript代码,Script类;
|
|
[Tapestry]Tapestry数据校验-修改Body.java和Body.js 软件技术
lhwork 发表于 2006/7/11 17:51:06 |
1,Body.java:
protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
TapestryUtils.storePageRenderSupport(cycle, this);
this.addExternalScript(TapestryUtil.getResource(
|
|
[Tapestry]Tapestry数据显示与存储之间格式转换的研究 软件技术
lhwork 发表于 2006/7/11 17:48:53 |
应用的数据一方面显示给用户看,另一方面需要保存到数据库中。而这两个用途数据的表现形式可能不同。
举例来说:
1,用户看到的性别是“男”,而数据库中存储的是“0”--这种类型的数据属于代码数据;
2,用户看到的数量是“1,214,235.30”,而数据库中存储的是“1214235.3”--这种类型的数据属于格式上的控制,可能与本地化有关。
对于以上关于数据显示和存储的差异Tapestry是如何设计与解决的呢?请接着往下看...
一、数据显示的格式化
1,输入域
用户可以输入数据的组件,如:TextField。
需要设置translator属性,如果是代码数据的转换则继承于AbstractTranslator,如果是数据格式的转换则继承于FormatTranslator。
如果是继承于AbstractTranslator,则需要实现formatObject方法和parseText方 |
|
[Tapestry]修改Tapestry异常处理页面 软件技术
lhwork 发表于 2006/7/11 17:48:07 |
Tapestry的异常处理页面显示的信息比较全,在开发阶段对于调试修改错误是非常有好处的。但是在运行期用户看到这样的信息时会不知所措的。
所以,我将异常画面设计为两套,一套服务于开发阶段,称之为设计期异常画面;另一套是专供最终用户看的,称之为运行期异常画面;设计期异常画面可以完全采用tapestry默认的异常画面,而运行期异常处理中把设计期异常信息写入日志文件中,而把定制的异常信息显示给用户,这样的页面可能非常简单,就是显示一行信息。
为此,需要修改Tapestry的默认配置,修改默认的异常处理页面。
1.将org\apache\tapes |
|
[Tapestry]Tapestry框架的扩展的研究 软件技术
lhwork 发表于 2006/7/11 17:46:24 |
介绍:Tapestry框架底层使用了Hivemind这个小巧的IOC容器,很多功能都有相应的配置文件。
这些配置文件主要包括:service-point(服务点), implementation(服务实现),configuration-point(配置点)和contribution(配置实现)三个关键概念。
其中,服务点定义了服务的接口与默认实现,implementation可以覆盖服务点的默认实现,服务点ID和配置点ID在一个模块中必须唯一。
|
|
|