Есть ли в Tapestry 5 композитные компоненты?

Я пытаюсь написать такой составной компонент

<!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>

Но я не могу точно найти, какой метод использовать для получения отдельных элементов и создания элемента даты. Есть идеи?


person Farouk Alhassan    schedule 02.09.2011    source источник


Ответы (1)


Вам нужно будет добавить value параметр типа Date, а также геттеры и сеттеры для year и monthproperties в вашем классе компонента:

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, чтобы получить/установить различные части значения даты.

person Henning    schedule 02.09.2011
comment
Компоненты управления формой немного сложнее, чем другие типы компонентов... вы должны знать о первоначальном рендеринге и возможной отправке формы. Например, вы можете захотеть обработать случай, когда параметр value имеет значение null при отправке. tapestry.apache.org/current/apidocs В этом может помочь компонент /org/apache/tapestry5/. - person Howard M. Lewis Ship; 02.09.2011
comment
Спасибо за помощь. Я сделал именно так, как вы предложили, и это сработало идеально - person Farouk Alhassan; 04.09.2011