Создать строку представления объекта, если он не существует - PullRequest
0 голосов
/ 26 мая 2018

У меня есть страница с объектом просмотра, который возвращает одну строку.Мое намерение состоит в том, чтобы создать строку, если она не существует.При входе на страницу, если существует строка с определенным ключом, страница загружается и также может быть хорошо обновлена.Когда строка с определенным ключом не существует, страница загружается неправильно.Метод createrow из объекта представления не вызывается.Я думаю, что я что-то упустил в моей странице.

Я пробовал с invokeAction

<invokeAction id="initEmptyRowSet" Binds="Rollback" Refresh="always"
                  RefreshCondition="#{bindings.MyVO1Iterator.queryModel == null}"/>

или

<invokeAction Binds="EventTypesExecuteWithParams" id="invokeEventTypes“ Refresh="ifNeeded"/>

<action IterBinding="MyVO1Iterator“ id="EventTypesExecuteWithParams"
    InstanceName="MyAppModuleDataControl.AccidentIVVVO"
    DataControl="MyAppModuleDataControl" RequiresUpdateModel="true"
    Action="executeWithParams">
</action>

Чего мне не хватает?

1 Ответ

0 голосов
/ 27 мая 2018

Вы должны вызвать операцию CreateInsert на VOIterator условно.Здесь ваше условие: если количество строк VOIterator> 0, то не вставляйте новую строку, иначе выполните итератор для запроса VO.

Вот пример кода.

<iterator Binds="AccidentIVVVO" RangeSize="25"
     DataControl="MyAppModuleDataControl" id="MyVO1Iterator"/>

<invokeAction id="createInsert" Binds="CreateInsert"
     RefreshCondition="#{bindings.MyVO1Iterator.estimatedRowCount == 0}"
     Refresh="ifNeeded"/>

<action IterBinding="MyVO1Iterator" id="CreateInsert" 
    InstanceName="MyAppModuleDataControl.MyVO1"
    DataControl="MyAppModuleDataControl"
    RequiresUpdateModel="true" Action="createInsertRow"/>
...