• Tapestry5之页面显示


    这是一篇相对来说更加杂乱的文章了。基于最近的一个项目,把一些碰到的问题记下来。

    1 t:Output和t:OutputRaw

    他俩长得很像,但是差别不小。

    Output是一个至少要有两个参数的Component,分别为:value和format。

    Format就是java.text.Format。可以有两种方式来设定

    a,在页面中,如:format="literal:yyyy-MM-dd";

    b,在java类中声明,如:

    @Property
    private Format someFormat = new SimpleDateFormat("yyyy-MM-dd");

    tml中:format="someFormat";

    而OutputRaw只需要一个参数,就是value。它有另外一个特点,就是假如你给他设定的value值有特殊符号,它能够解析出来。

    2 t:Loop 有两个必须的参数,source和value。

    source,是一个实现了Iterable接口的类型。

    value,这个有些意思。

    如果我们写成

    <t:loop t:source="someSource" t:value="someValue">
      some html code
    </t:loop>

    那么,我们需要在java代码中有一个@Property private String sameValue。

    如果我们这个Loop就仅仅是为了显示,我们可以这样来写:

    <t:loop t:source="someSource" t:value="var:someValue">
      some html code with "var:someValue" as an Entity
    </t:loop>

    这样的话,不需要再java代码中有someValue这个属性了。

    究其原因,与Loop.java中的

        @Parameter(principal = true)
        private T value;

    相关。这个@Parameter的String defaultPrefix() default BindingConstants.PROP;所以把它当成一个变量了。而修改为var的话,

    Allows for temporary storage of information during the render only。

    3 如果我们循环的一个实体中有一个属性还是一个可以循环的实体,这个时候代码应该如下:

            <t:loop t:source="source" t:value="one">
                ${one.letters}
                <t:loop t:source="one.numbers" t:value="var:number">
                    ${var:number}
                </t:loop>
            </t:loop>

    以上粗体蓝色部分,万万不能加上${}否则就会被解析成一个字符串了。

  • 相关阅读:
    for循环原来是这样
    C#中属性的作用
    腾讯、百度、阿里、微软面试题精选(不断更新)
    不容易:社会保险法历时3年终获通过 事关亿万百姓利益
    Oracle操作大对象BLOB示例
    Oracle操作大对象CLOB
    设计模式的分类和每种类型的作用
    LinkedList、ArrayList和Vector集合类型的区别和联系?
    hashmap,hashtable,TreeMap, WeakHashMap的区别和联系?
    hdu 2551
  • 原文地址:https://www.cnblogs.com/voctrals/p/2987570.html
Copyright © 2020-2023  润新知