Компоненты Tapestry

Для построения пользовательского интерфейса WEDA Framework использует Tapestry версии 4.0

WEDA Framework поставляется со следующими компонентами:

Для того чтобы воспользоваться компонентами в вашем приложении необходимо зарегистрировать библиотеку компонентов WEDA Framework в конфигурационном файле приложения Tapestry:

        
            <library id="weda" specification-path="/org/weda/tapestry/component/Weda.library"/>
        
    

Компонент ActionPanel

Задача компонента - визуализация действий

Список действий который нужно визуализировать формируется следующим образом:

  1. ActionPanel сканирует все визуальные компоненты которые находятся в теле элемента на странице шаблона
  2. Если найденый компонент реализует интерфейс org.weda.action.ActionContainer , тогда для получения списка достуных действий ActionPanel вызывает метод getActionsStates()
  3. Если найденый компонент реализует интерфейс org.weda.action.ActionContainerProvider , тогда ActionPanel получает список из org.weda.action.ActionContainer вызвав метод getActionContainers() И затем для каждого контейнер действий выполняет пункты 2, 3

Параметры компонента ActionPanel

Название Тип Описание Может быть пустым?
position String Определяет место расположения действий относительно того что будет прорисовано в теле элемента шаблона страницы. По умолчанию: literal:top Да
renderActionAsLink boolean Определяет способ отображения действий. Если ognl:true тогда действия будут отображаться в виде ссылок, иначе в виде кнопок По умолчанию: ognl:false Да
actionContainers Object[] Добавляет контейнера действий дополнительно к найденым внутри тела элемента компонента в шаблоне страницы Да
actionParameters Map<String, Object> Позволяет задать значения параметров действия. Ключ ассоциативного массива это название параметра, а его значение - значение параметра. Да
style String HTML стиль компонента Да

Пример конфигурации:

            
    <span jwcid="@weda:ActionPanel" position="top" renderActionAsLink="ognl:true">
        <span jwcid="@weda:Table" tableModel="weda.table-model:moneyOperation-view"/>
    </span>           
        
        

Внешний вид:

Компонент ActionError

Задача компонента - показать ошибку возникшую при выолнение действия.

Компонент ActionPanel пользуется данным компонентом

Параметры компонента ActionError

Название Тип Описание Может быть пустым?
actionPanel org.weda.tapestry.component.ActionPanel Задает панель действия ошибки которой нужно отображать Нет

Внешний вид:

Компонент EditorGroup

Задача компонента - сгруппировать редакторы.

Параметры компонента EditorGroup

Название Тип Описание Может быть пустым?
modelGroup org.weda.model.EditorModelGroup Задает название группы редактирования. Подробнее о моделя редактирования можно узнать в разделе Модели редактирования Нет
exceptionOnEditorError boolean Определяет нужно ли останавливать (с сообщением об ошибке) устанавиливать значения редакторов при возникновении ошибки установки значения в одном из редакторов. По умолчанию: ognl:false Да

Пример конфигурации:

            
        <span 
            jwcid="@weda:EditorGroup" modelGroup="weda.editor-model-group:operationItem-edit"
        >
            <table border="0" cellpadding="3px">
                <tr>
                    <td>
                        <span jwcid="@weda:EditorLabel" modelName="itemName"/>
                    </td>
                    <td>
                        <span jwcid="@weda:BaseEditor" modelName="itemName" cols="40"/>
                    </td>
                    <td>
                        <span jwcid="@weda:EditorError" modelName="itemName"/>
                    </td>
                </tr>
                <tr>
                    <td>
                        <span jwcid="@weda:EditorLabel" modelName="operationType"/>
                    </td>
                    <td>
                        <span jwcid="@weda:BaseEditor" modelName="operationType" style="width:100%"/>
                    </td>
                    <td>
                        <span jwcid="@weda:EditorError" modelName="operationType"/>
                    </td>
                </tr>
            </table>
        </span>
            
        

Компонент EditorLabel

Задача компонента - отображение названия модели редактирования

Компонент дожен использоваться в теле элемента компонента EditorGroup

Параметры компонента EditorLabel

Название Тип Описание Может быть пустым?
modelName String Задает имя модели редактирования. В качестве названия модели будет выступать свойство displayName дескриптора свойства возвращаемого методом модели редактирования getPropertyDescriptor() Нет
style String HTML стиль компонента Да

Пример конфигурации:

            
                <span jwcid="@weda:EditorLabel" modelName="itemName"/>
            
        

Внешний вид:

Компонент BaseEditor

Задача компонента - редактирование значения модели редактирования

BaseEditor позволяет редактировать значение модели следующими способами:

  • в строке редактирования
  • выбирать значение из выпадающего списка, если для свойства объекта, значение которого редактирует модель, задано списочное ограничение
  • выбирать значение на другой странице в том случае , если для свойства объекта, значение которого редактирует модель, задано списочное ограничение и задано имя страницы в параметре valueEditorPageName

Компонент дожен использоваться в теле элемента компонента EditorGroup

Параметры компонента BaseEditor

Название Тип Описание Может быть пустым?
modelName String Задает имя модели редактирования Нет
cols int Ширина поля редактора в символах. По умолчанию: 10 Да
rows int Количество строк в поле редактора. По умолчанию: 1 Да
valueEditorPageName String Название страницы в которой будет выбираться значение для редактора. По умолчанию: null Да
directValueSet boolean Если true тогда значение выбранное для редактора на внешней странице напрямую установится в значение модели. Да
style String HTML стиль компонента Да

Пример конфигурации:

            
            <span 
                jwcid="@weda:BaseEditor" modelName="operationItem" 
                valueEditorPageName="OperationItemList" style="width:100%"/>
            
        

Внешний вид:

Простой редактор

Редактор с выпадающим списком

Редактор значение которого выбирается на другой странице

Компонент FileEditor

Задача компонента - установка в качестве значения модели, данных файла полученного от пользователя.

Компонент дожен использоваться в теле элемента компонента EditorGroup

Параметры компонента FileEditor

Название Тип Описание Может быть пустым?
modelName String Задает имя модели редактирования Нет
style String HTML стиль компонента Да

Пример конфигурации:

            
                <span jwcid="@weda:FileEditor" modelName="image" style="width:100%"/>
            
        

Внешний вид:

Компонент EditorError

Задача компонента - отображение ошибки, возникшей при установки значения редактора.

Компонент дожен использоваться в теле элемента компонента EditorGroup

Параметры компонента EditorError

Название Тип Описание Может быть пустым?
modelName String Задает имя модели редактирования для которой нужно отображать сообщение об ошибке установки значения Нет
style String HTML стиль компонента Да

Пример конфигурации:

            
               <span jwcid="@weda:EditorError" modelName="amount"/>
            
        

Внешний вид:

Компонент Table

Задача компонента - отображение данных табличной модели

Параметры компонента Table

Название Тип Описание Может быть пустым?
tableModel org.weda.model.TableModel Задает табличную модель, данные которой необходимо отобразить Нет

Пример конфигурации:

            
        <span jwcid="@weda:Table" tableModel="weda.table-model:moneyOperation-view"/>
            
        

Внешний вид:

Компонент TabPanel

Задача компонента - распределение данных по вкладкам

Параметры компонента TabPanel

Название Тип Описание Может быть пустым?
tabNames List<String> Список названий блоков вкладок Нет
tabTitles List<String> Список названий вкладок Нет

Пример конфигурации:

            
    <span 
        jwcid="@weda:TabPanel" 
        tabTitles="ognl:{'Документы в копии','Документы для которых нет копий'}"
        tabNames="ognl:{'tab1','tab2'}"
    />
    
    <span jwcid="tab1@Block">
        <span jwcid="@weda:ActionPanel" position="top" renderActionAsLink="ognl:true">
            <table jwcid="@weda:Table" tableModel="weda.table-model:document-in_image-view" border="1"/>
        </span>        
    </span>
    
    <span jwcid="tab2@Block">
        <span jwcid="@weda:ActionPanel" position="top" renderActionAsLink="ognl:true">
            <table jwcid="@weda:Table" tableModel="weda.table-model:document-without_image-view" border="1"/>        
        </span>
    </span>
            
            
        

Внешний вид: