Spring Web Débit: Comment puis-je transmettre des valeurs d'un flux à un autre flux

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

  •  18-09-2019
  •  | 
  •  

Question

J'ai une application Web Java en utilisant le flux web de printemps.

Comment puis-je transmettre des valeurs d'un flux à un autre flux?

<?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>

Je suis un problème avec la fonctionnalité d'édition ici. Dans ma page d'édition je nom d'utilisateur, ancienmotdepasse, newpassword et confirmer les champs de mot de passe.

Tout d'abord dans l'état validateAccount je vérifie si le nom d'utilisateur et ancienmotdepasse existe dans la base de données, si elle n'existe pas que je transmets à queryAll état.

Si elle existe je vérifie si les nouvelles valeurs de mot de passe et confirmPassword sont les mêmes, si elles sont les mêmes que je procède à l'édition.

Sinon je reviens encore une fois à queryAll.

Etat queryAll obtient l'autorité de l'utilisateur à remplir sous la forme lors de réafficher la page. Quand je quitte les champs de mot de passe vide et la première fois que je clique bouton modifier Il jette un java.lang.NullPointerException.

Était-ce utile?

La solution

Créez vos deux flux comme sous-flux et les données de chaque flux devraient être disponibles dans le parent et les autres sous-flux.

  

Les données cartographiques du sous-flux se produit   avant la session démarre sous-flux.   les données cartographiques de la sous-flux de retour à   le flux parent se fait lorsque le   SubFlow finalise et le flux parent   séance reprend.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top