تدفق الويب الربيعي: كيف يمكنني اجتياز القيم من تدفق واحد إلى تدفق آخر

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

  •  18-09-2019
  •  | 
  •  

سؤال

لدي تطبيق على شبكة الإنترنت Java باستخدام تدفق الويب الربيع.

كيف يمكنني تمرير القيم من تدفق إلى تدفق آخر؟

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

أواجه مشكلة في وظيفة تحرير هنا. في صفحتي "تحرير"، لدي اسم مستخدم، OldPassword، NewPassword وتأكيد حقول كلمة المرور.

أولا في الحالة ValidateACCount، أتحقق من وجود اسم المستخدم وكلمة oldpassword في قاعدة البيانات، إذا لم يكن موجودا، فأنا أجدها إلى حالة QueryALL.

إذا كان موجودا أتحقق مما إذا كانت كلمة المرور الجديدة وقيم الكلمة الجديدة هي نفسها، إذا كانت هي نفسها، فأنت متابعة التحرير.

إذا لم أكن أعود مرة أخرى إلى QueryALL.

تحصل حالة Queryall على سلطة المستخدم لملء ذلك في النموذج عند إعادة عرض الصفحة. عندما أترك حقول كلمة المرور فارغة وأول مرة قمت بالنقر فوق الزر "تحرير"، فهو يرمي java.lang.nullpointerException.

هل كانت مفيدة؟

المحلول

قم بإنشاء تدفقان الخاص بك كنوع تخدم، ثم يجب أن تكون البيانات الموجودة في كل تدفق متاحة في الوالد والتخفيضات الأخرى.

يحدث تعيين البيانات إلى Subflow يحدث قبل بدء جلسة عدم بلطف. يتم تعيين بيانات التعيين من Subflow مرة أخرى إلى تدفق الوالد عند إكمال الفرع النوعي وتستأنف جلسة تدفق الوالدين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top