您的位置:首页 > 编程语言 > Java开发

Tapestry使用示例及注意点总结

2014-06-09 14:59 471 查看
例子中源码包的结构说明:



Tapestry使用注意点:

1、 保证工程的编码与页面的编码都是一致的,例如utf-8,否则可能会报Invalid byte 3 of 3-byte的错误。

2、 tapestry不支持 等html特殊符号,会报类似这个错误“undeclared general entity "nbsp"”,解决办法是在tml里边添加上xhtml的头文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

3、 在pages包下的properties文件,相当于是对页面文件的进一步详细配置,里面可以对页面中的属性字段的名称进行配置,也可以对form提交中的字段进行校验。

       其中:属性名-label=***       这个是页面上实际显示的名称

                  属性名-regexp=***      这个是该属性的校验规则

                  属性名-regexp-message=***       这个是校验时的提示信息

4、 页面对应的类文件中,对session操作需要注意,session应该用@Inject注入。

5、 如果是在services包下的数据库操作类中,对session的更新或保存操作,仅有@CommitAfter的注释是不行的,无法保存数据。在方法上标注 @CommitAfter 注解之后,你需要告诉 Tapestry 去通知这些方法,所以需要在AppModule类中,加入

@Match("*Dao")
public static <T> T decorateTransactionally(HibernateTransactionDecorator decorator, Class<T> serviceInterface,T delegate, ServiceResources resources){
return decorator.build(serviceInterface, delegate, resources.getServiceId());
}

6、 页面显示字段的顺序按照类中get方法的顺序显示,若要提前显示某个字段,需将该字段的get方法提前到相应的位置。

7、 在实体类的字段上加上@NonVisual注释,页面调用时,就不会显示该字段。

8、 如果只集成hibernate,web.xml配置如下:

<filter>
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
</filter>

       配置后还需要把有关spring的tapestry的jar包删掉,不然启动会报错误。如果还集成了spring,web.xml配置如下:

<filter>
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
</filter>

9、 css和js可以在模板文件中引入

<link href="${asset:css/table.css}" rel="stylesheet" type="text/css"/>

       也可以在模板文件对应的java类中,通过注释引入

@Import(stylesheet="context:css/site.css")
public class MyComponent
{
}

10、 在启动时就获得hibernate,而不是在第一次请求时加载hibernate,需要在AppModule类中加入一个配置项:

configuration.add(HibernateSymbols.EARLY_START_UP, "true");

 >>>>>>>源码下载<<<<<<<<<
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息