Поток лиц с многоразовыми представлениями

Каждый пример, который я видел для Faces Flow, включает эксклюзивные представления, которые используются только в конкретном потоке. Что я хотел бы сделать, так это создать поток, который почти полностью состоит из представлений, которые будут использоваться более чем в одном потоке и/или потенциально вне потока. Возможно ли повторное использование представлений, или Faces Flow не предназначен для такого использования?

Пример Faces Flow из документа JavaEE 7


person jdessey    schedule 14.10.2013    source источник
comment
Не стесняйтесь обновлять мой ответ проверенным контентом. Ответы лучше публиковать в поле ответа, а не в самом вопросе!   -  person Xtreme Biker    schedule 16.10.2013
comment
Я отредактировал ответ (похоже, он будет доступен после экспертной оценки). Спасибо за совет - я все еще привыкаю к ​​формату.   -  person jdessey    schedule 16.10.2013
comment
Ваше редактирование было отклонено, однако я восстановил его ;-)   -  person Xtreme Biker    schedule 16.10.2013


Ответы (1)


Faces Flow в основном состоит (или может состоять) из представлений JSF, которые сами по себе могут использоваться повторно. Если вы ссылаетесь на 2_faces_flow" rel="nofollow">эту запись:

Что нового в JSF 2.2 для потоков?

Поток приложения больше не ограничивается потоком между страницами, а вместо этого определяется как поток между «узлами». Существует пять различных типов узлов:

Просмотр: любая страница JSF в приложении.

Вызов метода: вызов логики приложения из потокового графа через EL.

Switch: решения о навигации в потоковом графе на основе логического EL.

Вызов потока: вызовите другой поток с параметрами и получите возвращаемые значения.

Возврат потока: возврат к вызывающему потоку.

Первый пункт сам отвечает на ваш вопрос!


ИЗМЕНИТЬ ОТ OP (@jdessey)

Я подтвердил принятый ответ при тестировании и хотел бы поделиться несколькими предостережениями по реализации.

Programmatic flow definition (i.e. @FlowDefinition annotation) is only processed if the class that contains the annotated method is itself a normal scoped CDI bean such as `@ApplicationScoped`. (Might be a bug - I'm using JSF 2.2.4 and Weld 2.0.4)
When defining the view node using FlowBuilder.viewNode(String viewNodeId, String vdlDocumentId), the document id must be the absolute path to the .xhtml file. This is in the javadoc but not intuitive IMO because since 2.0 we are used to implicit navigation.

Код:

@ApplicationScoped
public class MyFlow implements Serializable {

    @Produces @FlowDefinition
    public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
        flowBuilder.id("", "myFlow");
        flowBuilder.viewNode("anyView", "/absolutePathToView.xhtml").markAsStartNode();
        return flowBuilder.getFlow();
    }
}

Теперь, чтобы перейти к этому потоку, просто используйте «myFlow» в качестве случая неявной навигации, например:

<p:menuitem value="Begin Flow" action="myFlow" />
person Xtreme Biker    schedule 15.10.2013