Скажем, у меня есть кнопка:Перенаправление методом в пластах
<h:commandButton value="Assign task" action="#{taskAssigner.assignTo(user)}"/>
который назначает новую задачу для пользователя. Я хотел бы, чтобы иметь возможность немедленно перенаправить на страницу задачи, которая будет эквивалентно нажатию на ссылку, как
<s:link value="#{task.description}" action="#{workOnTask.start}">
<f:param name="taskId" value="#{task.id}" />
</s:link>
при условии, что в WEB-INF/pages.xml У меня есть что-то вроде
<page view-id="/task-list.xhtml">
<navigation from-action="#{workOnTask.start}">
<redirect view-id="/task.xhtml"/>
</navigation>
</page>
Я не вижу, как это сделать на Java в TaskAssigner.assignTo(). Мне нужен доступ к компоненту Seam, не так ли? Мне нужно перенаправить на /task.xhtml и установить параметр taskId по мере необходимости, а также запустить workOnTask.start(), который выполняет некоторую инициализацию на компоненте.
Но как я подключить это 'workOnTask.start'? Есть ли способ вызвать его из 'assignTo()'? Это главная проблема. WorkOnTask имеет '@RequestParameter Long taskId' и' WorkOnTask.start() 'использует этот параметр. – janek37
Я полагаю, что установка параметра запроса для следующего запроса непосредственно в методе assignTo невозможна. Но если вам нужен параметр-запрос для передачи идентификатора задачи, одним из способов было бы установить его в навигационном правиле: ваш компонент 'taskAssigner' уже имеет доступ к задаче - возможно, вы вставляете его туда. Поэтому вы также можете использовать его в правиле навигации: '' – MrD
Хорошо, но как я могу убедиться, что 'task' доступен from pages.xml? Объект создается в методе 'assignTo'. – janek37