Feder -Web -Flow: Wie übergende ich Werte von einem Fluss auf einen anderen Fluss

StackOverflow https://stackoverflow.com/questions/1872602

  •  18-09-2019
  •  | 
  •  

Frage

Ich habe eine Java -Webanwendung mit Spring Web Flow.

Wie überfahre ich Werte von einem Fluss auf einen anderen Fluss?

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <persistence-context />

    <var name="editBean" class="jp.co.anicom.domain.User" />
    <var name="deleteBean" class="jp.co.anicom.domain.User" />
    <var name="authorityBean" class="jp.co.anicom.domain.Authority" />


    <on-start>
        <set name="flowScope.username" value="requestParameters.username" />
    </on-start>

    <action-state id="queryAll">
        <evaluate expression="employeeAction.GetAuthority(flowScope.username)"
            result="authorityBean" />
        <transition to="editForm" />
    </action-state>

    <view-state id="editForm" model="editBean" view="../xhtml/framework/edit">
        <transition on="editButton" to="validateAccount" />
        <transition on="delete" to="getId" />
        <transition on="back" to="editSuccessful" />
    </view-state>

    <action-state id="validateAccount">
        <evaluate expression="employeeAction.GetEmployee(flowScope.username, oldPassword)"
            result="editBean" />
        <transition to="checkUserAccount" />
    </action-state>

    <action-state id="getId">
        <evaluate expression="employeeAction.GetEmployee(flowScope.username)"
            result="deleteBean" />
        <transition to="deleteUser" />
    </action-state>

    <decision-state id="checkUserAccount">
        <if test="editBean == null" then="queryAll"
            else="confirmPassword" />
    </decision-state>

    <decision-state id="confirmPassword">
        <if test="newPassword.equals(confirmPassword)" then="editUser1"
            else="queryAll" />
    </decision-state>

    <action-state id="editUser1">
        <set name="editBean.password" value="newPassword" />
        <transition to="editUser2" />
    </action-state>

    <action-state id="editUser2">
        <evaluate
            expression="employeeAction.editEmployee(editBean, authorityBean.authority)" />
        <transition to="editSuccessful" />
    </action-state>

    <action-state id="deleteUser">
        <evaluate expression="employeeAction.deleteEmployee(deleteBean)" />
        <transition to="editSuccessful" />
    </action-state>

    <end-state id="editSuccessful"
        view="externalRedirect:contextRelative:/admin_main.do" commit="true" />
    <end-state id="displayError" view="../xhtml/framework/displayError" />
    <end-state id="dummy1" view="../xhtml/framework/dummy" />

    <global-transitions>
        <transition on-exception="java.lang.Exception" to="displayError" />
    </global-transitions>

</flow>

Ich habe hier ein Problem mit der Bearbeitungsfunktion. Auf meiner Bearbeitungsseite habe ich Benutzername, Oldpassword, NewPassword und Bestätigung Passwortfelder.

Erstens in ValidateAccount -Status, überprüfe ich, ob der Benutzername und das Oldpassword in der Datenbank vorhanden sind. Wenn es nicht vorhanden ist, leite ich es an Queryall -Status weiter.

Wenn es vorhanden ist, überprüfe ich, ob das neue Kennwort gleich ist, und bestätigen Sie die Password -Werte gleich. Wenn sie gleich sind, fahre ich mit der Bearbeitung fort.

Wenn nicht, kehre ich wieder nach Queryall zurück.

QueryAlL State erhält die Autorität des Benutzers, ihn beim erneuten Display der Seite in der Form zu bevölkern. Wenn ich die Kennwortfelder leer lasse und beim ersten Mal auf Schaltfläche Bearbeiten klicke, wirft es eine java.lang.nullpointerexception aus.

War es hilfreich?

Lösung

Erstellen Sie Ihre beiden Flows als Unterflows, und dann sollten die Daten in jedem Fluss im übergeordneten und anderen Teilflows verfügbar sein.

Die Zuordnung von Daten in den Unterflow erfolgt vor dem Start der Unterflow -Sitzung. Die Zuordnung von Daten vom Unterflow zurück zum übergeordneten Fluss erfolgt, wenn der Unterflow abgeschlossen ist und die übergeordnete Strömungssitzung aufnimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top