Я обнаружил, что некоторые таблицы встречаются в моем приложении довольно часто, и я пытаюсь упаковать их как композиции. Вот выдержка из того, что я придумал:
<p:dataTable var="permission" value="#{permissionList}"
id="permissionTable">
<p:column headerText="Edit" rendered="#{showEdit}" style="width:50px">
<p:rowEditor />
<p:commandLink action="#{removeAction}" update="permissionTable">
<span class="ui-icon ui-icon-close" />
</p:commandLink>
</p:column>
</p:dataTable>
В настоящее время есть три параметра:
permissionList
содержание таблицы
showEdit
для включения и выключения параметров встроенного редактирования, которые невозможны во всех местах.
removeAction
потому что удаление разрешения может означать удаление его из роли, субъекта или удаление в зависимости от контекста.
Включение таблицы разрешения теперь выглядит следующим образом:
<ui:include src="compositions/permissionTable.xhtml">
<ui:param name="permissionList"
value="#{permissionRoleDetailBean.role.permissions}" />
<ui:param name="showEdit" value="#{true}" />
<ui:param name="removeAction"
value="#{permissionRoleDetailBean.removePermission(permission)}" />
</ui:include>
К сожалению, есть проблема с параметром removeAction
. Все, что я передаю, кажется пустым, когда включено. Я признаю, что использование контекстного имени параметра (permission
), вероятно, похоже на попрошайничество.
Так как же я мог
- Получите мой подход выше, чтобы работать?
- Правильно ли выполнять действия для композиций? Я почему-то подозреваю, что упускаю что-то фундаментальное.