zoukankan      html  css  js  c++  java
  • 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>

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

  • 相关阅读:
    jqueryUI弹出框问题
    spring data jpa分页
    解决eclipse编辑js和html卡的问题
    web.xml添加编码过滤器
    Apache SolrCloud安装
    搭建zookeeper集群
    html页面读取PDF小案例
    .NET 使用Process调用7_zip解压文件
    .NET 中三种正确的单例写法
    Git 笔记
  • 原文地址:https://www.cnblogs.com/voctrals/p/2987570.html
Copyright © 2011-2022 走看看