【问题标题】:Does Tapestry 5 Have composite componentsTapestry 5有复合组件吗
【发布时间】:2011-09-02 09:21:01
【问题描述】:

我正在尝试编写这样的复合组件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
    <t:select t:id="yearField" t:value="year" t:blankOption="always" t:model="yearModel" class="select"/>
    <t:select t:id="monthField" t:value="month" t:blankOption="always" t:model="monthModel" class="select"/>
</t:container>

这样我就可以这样使用了

<t:dateselector t:value="testDate"></t:dateselector>

但我无法准确找到获取单个元素和构造日期元素的方法。有什么想法吗?

【问题讨论】:

    标签: java tapestry


    【解决方案1】:

    您必须在component class 中添加Date 类型的value parameter 以及yearmonthproperties 的getter 和setter:

    public class MyDatePicker {
       @Parameter
       private Date value;
    
       public Integer getYear() { ... }
       public void setYear(Integer year) { ... }
       public Integer getMonth() { ...}
       public void setMonth(Integer month) { ... }
    
    }
    

    您可以使用 Java 的 Calendar 或非常出色的 Joda Time 来获取/设置日期值的不同部分。

    【讨论】:

    • 表单控件组件比其他类型的组件要复杂一些……您必须注意初始渲染与最终表单提交。例如,您可能希望处理提交时 value 参数为 null 的情况。 tapestry.apache.org/current/apidocs/org/apache/tapestry5/… 组件可以提供帮助。
    • 感谢您的帮助。我完全按照你的建议做了,效果很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多