首先说明一下,并不是每一个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-pattern>/*</url-pattern> </filter-mapping>
也就是说与红色部分相关联。
This module is a good place to configure and extend Tapestry, or to place your own service definitions.
这个模块是配置或者扩展Tapestry的一个好地方,我们也可以在这里放置我们自定义的服务。
1 public static void bind(ServiceBinder binder)
binder的功能就是通过:
a binder.bind(SomeService.class, SomeServiceImpl.class);
b binder.bind(SomeService.class);
这样我们就可以Page页面中用@Inject,注入一个SomeService服务。而用到的就是SomeServiceImpl的方法或者是SomeService的方法。
2 Tell Tapestry about our custom translators, validators, and their message files.
告诉Tapestry我们自己的转换器,验证器和message文件。
public static void contributeTranslatorAlternatesSource( MappedConfiguration<String, Translator> configuration, ThreadLocale threadLocale)
public static void contributeFieldValidatorSource(MappedConfiguration<String, Validator> configuration)
public void contributeComponentMessagesSource(OrderedConfiguration<String> configuration)
3 Tell Tapestry about our custom ValueEncoders. We do this by contributing configuration to Tapestry's ValueEncoderSource service.
告诉Tapestry我们自己的编码器(Encoder)。
public static void contributeValueEncoderSource(MappedConfiguration<Class, Object> configuration){
configuration.addInstance(Person.class, PersonEncoder.class);
}
4 public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
这个就是用来修改Tapestry的许多默认的东西的。
目前我知道的有:
configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en_US,en_GB,fr");
// 修改国际化信息configuration.add(JQuerySymbolConstants.SUPPRESS_PROTOTYPE, "false"); // 修改对JQuery的排他
configuration.add(JQuerySymbolConstants.JQUERY_ALIAS, "$j"); // 修改JQuery的默认符号
configuration.add(SymbolConstants.START_PAGE_NAME, "welcome");// 修改默认的首页
configuration.add(SymbolConstants.CHARSET, "utf-8");// 修改默认字符集
configuration.add(ComponentParameterConstants.GRID_ROWS_PER_PAGE, "15"); //修改grid默认的表示行数
5
Tell Tapestry how to handle JBoss 7's classpath URLs - JBoss uses a "virtual file system".
告诉Tapestry如何去处理JBoss 7的classpath URLs。因为JBoss使用一个虚拟的文件系统。
public static void contributeServiceOverride(MappedConfiguration<Class, Object> configuration) {
configuration.add(ClasspathURLConverter.class, new ClasspathURLConverterJBoss7());
}
6Tell Tapestry how to handle @EJB in page and component classes.
@Primary public static void contributeComponentClassTransformWorker(OrderedConfiguration<ComponentClassTransformWorker2> configuration) { configuration.addInstance("EJB", EJBAnnotationWorker.class, "before:Property"); }
告訴Tapestry如何在頁面中處理@EJB
慢慢总结吧,待续。。。