• Tapestry5之Application Module


    首先说明一下,并不是每一个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());
    }


    6 Tell Tapestry how to handle @EJB in page and component classes.
    告訴Tapestry如何在頁面中處理@EJB
    @Primary public static void contributeComponentClassTransformWorker(OrderedConfiguration<ComponentClassTransformWorker2> configuration) {   configuration.addInstance("EJB", EJBAnnotationWorker.class, "before:Property"); }

    慢慢总结吧,待续。。。
  • 相关阅读:
    对js数组的splice实现
    前端必读
    命令模式
    访问者模式
    观察者模式
    解释器模式
    装饰器模式
    组合模式
    抽象工厂模式
    搜索结果关键词高亮显示
  • 原文地址:https://www.cnblogs.com/voctrals/p/2985572.html
Copyright © 2020-2023  润新知