2014-08-05 3 views
0

Я представляю поток JSF Faces в мое приложение. Это работает, следуя oracle documentation. Но, только в корневой папке.Как разместить поток JSF в подпапке?

Возможно ли разместить папку потока JSF в подпапке, иначе этот корень?

Я не могу получить эту работу. Это все люди!

ответ

1

Я решил это сам.

Определение JSF потока можно сделать 2-мя способами:

  • с файлом конфигурации: flowname-flow.xml
  • с классом конфигурации: flowname.java

Первый может только имя потока, с указанием местоположения по умолчанию в корневой папке.

Второй может определить местоположение глубже в структуре папок.

Пример файла конфигурации: testflow.flow.xml

только ид = «testFlow» могут быть добавлены к определению и не путь. Это значение по умолчанию для testFlow/testFlow.xhtml для первой страницы.

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> 
    <flow-definition id="testFlow"> 
     <flow-return id="returnFromTestFlow"> 
      <from-outcome>#{testFlow.returnValue}</from-outcome> 
     </flow-return> 
    </flow-definition> 
</faces-config> 

Класс Пример конфигурации: TestFlow.java

Добавьте полный путь к узлу просмотра в этом потоке.

public class TestFlow implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Produces 
    @FlowDefinition 
    public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) { 

     String flowId = "testFlow"; 
     flowBuilder.id("", flowId); 
     flowBuilder.viewNode(flowId, 
       "/other/location/flow/" + flowId + ".xhtml"). 
       markAsStartNode(); 
     flowBuilder.viewNode("testFlow2", "/other/location/flow/testFlow2.xhtml"); 
     flowBuilder.viewNode("testFlow3", "/other/location/flow/testFlow3.xhtml"); 
     ... 

Это все люди!