6 頁面流pageflow的說明
說明:有狀態的session bean當中的某個方法調用頁面流的begin方法(需指定流程名),即進入一個頁面流程的開始,框架會自動找到類路徑下流程定義的<流程名>.jpdl.xml,根據<流程名>.jpdl.xml定義流程流轉的描述,進行流程頁面的跳轉。
注:整個頁面流轉過程是通過com.jboss.dvd.seam. EditCustomerAction類來協助實現的。
6.1 根據創建用戶功能newuser爲例
6.1.1 newuser頁面流定義說明圖
6.2.2 newuser頁面流定義文件
<?xml version="1.0"?>
<!—流程名與文件名相同<流程名>.jpdl.xml-->
<pageflow-definition
xmlns="http://jboss.com/products/seam/pageflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://jboss.com/products/seam/pageflow http://jboss.com/products/seam/pageflow-2.1.xsd"
name="newuser">
<!—流程開始節點指向account頁面節點-->
<start-state name="start">
<!—流程指向標籤-->
<transition to="account"/>
</start-state>
<!—流程account節點基於JSF由組件化後顯示頁面-->
<page name="account" view-id="/newuser/account.xhtml">
<redirect/>
<!—操作完成後轉入下一頁面節點-->
<transition name="next" to="checkPassword" />
</page>
<!--判斷節點,調用類isValidNamePassword方法,返回布爾值,判斷節點流轉走向-->
<decision name="checkPassword" expression="#{editCustomer.validNamePassword}">
<transition name="true" to="contact"/>
<transition name="false" to="account">
<!-- <action name="#{editCustomer.warnPassword}" /> action is never triggered -->
</transition>
</decision>
<!—頁面節點有會話時顯示view-id指定頁面並指向next,無會話時顯示no-conversation-view-id頁面並指向prev,會自動判斷節點流轉走向-->
<page name="contact" view-id="/newuser/contact.xhtml"
no-conversation-view-id="/newuser/account.xhtml">
<redirect/>
<transition name="prev" to="account"/>
<transition name="next" to="card"/>
</page>
<!—頁面節點有會話時顯示view-id指定頁面並指向next,無會話時顯示no-conversation-view-id頁面並指向prev,會自動判斷節點流轉走向-->
<page name="card" view-id="/newuser/card.xhtml"
no-conversation-view-id="/newuser/account.xhtml">
<redirect/>
<transition name="prev" to="contact"/>
<transition name="next" to="complete">
<!—調用會話bean當中的saveUser方法-->
<action expression="#{editCustomer.saveUser}"/>
</transition>
</page>
<!—頁面節點有會話時顯示view-id指定頁面並指向next,無會話時顯示no-conversation-view-id頁面並指向prev,會自動判斷節點流轉走向-->
<page name="complete" view-id="/newuser/complete.xhtml"
no-conversation-view-id="/newuser/account.xhtml">
<end-conversation/>
<redirect/>
</page>
</pageflow-definition>