Java SpringWebflow中的数据绑定问题

Java SpringWebflow中的数据绑定问题,java,spring,data-binding,spring-webflow,autowired,Java,Spring,Data Binding,Spring Webflow,Autowired,我是webflow的新手,在这里我面临几个问题。基本上,我希望将一个变量绑定到视图状态选择选项集,并在下一个视图中使用它。为此,我使用了以下代码 <var name="flowScope.jobIdString" class="java.lang.String" /> <input name="userId" type="java.lang.Long" /> <on-start> <set name="userId" value="1234"

我是webflow的新手,在这里我面临几个问题。基本上,我希望将一个变量绑定到视图状态选择选项集,并在下一个视图中使用它。为此,我使用了以下代码

<var name="flowScope.jobIdString" class="java.lang.String" />

<input name="userId" type="java.lang.Long" />

<on-start>
    <set name="userId" value="1234"></set>
</on-start>

<view-state id="startJob" view="/WEB-INF/jsp/startJob.jsp">

    <on-entry>
        <evaluate expression="jobService.getAllJobsForUser(userId)"
            result="flowScope.jobs">
            </evaluate>
    </on-entry>
    <transition on="createNew" to="createNewJob" />
    <transition on="editJob" to="editJob" />
</view-state>

<action-state id="createNewJob">
    <evaluate expression="patientBean" result="flowScope.patient" />
    <transition to="patientinfo" />
</action-state>

<action-state id="editJob">
    <evaluate expression="patientService.getPatientInfo(jobId)"
        result="flowScope.patient" />
    <transition to="patientinfo" />
</action-state>

<view-state id="patientinfo" model="patient"
    view="/WEB-INF/jsp/patientInfo.jsp">
</view-state>
}

这是我的工作服务

public class JobService {

public List<Job> getAllJobsForUser(Long userId) {

    ArrayList<Job> jobList = new ArrayList<Job>();
    Job job1 = new Job();
    job1.setId((long) 1234);
    job1.setName("Test Job Name");

    Job job2 = new Job();
    job2.setId((long) 1235);
    job2.setName("Test Job Name 2");

    jobList.add(job1);
    jobList.add(job2);
    return jobList;
}

您的流进入视图startjob.jsp,它是启动点。从这里开始,当您单击指定的按钮时,swf不知道如何恢复流程。因此,为了恢复流程,请在startjob.jsp中包含以下内容:

     <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}">

<webflow:flow-registry id="flowRegistry">
    <webflow:flow-location path="/WEB-INF/flow/webflow-flow.xml"
        id="webflow" />
</webflow:flow-registry>
<webflow:flow-executor id="flowExecutor"
    flow-registry="flowRegistry" />
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="flowRegistry" ref="flowRegistry" />
    <property name="order" value="0" />
</bean>
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
    <property name="flowExecutor" ref="flowExecutor" />
</bean>

<bean id="jobService" class="com.b.webfolwprototype.service.JobService" />
<bean id="patientService" class="com.brandix.webfolwprototype.service.PatientService"></bean>

<bean id="patientBean" class="com.b.webfolwprototype.model.Patient"
    scope="prototype" />

<bean id="jobBean" class="com.b.webfolwprototype.model.Job"
    scope="prototype" />
public class PatientService {

public void save(Patient patient) {
    System.out.println("save patinet");
}

public Patient getPatientInfo(Long jobId){
    Patient patient = new Patient();
    patient.setAge(35);
    patient.setName("test name");
    return patient;
}
public class JobService {

public List<Job> getAllJobsForUser(Long userId) {

    ArrayList<Job> jobList = new ArrayList<Job>();
    Job job1 = new Job();
    job1.setId((long) 1234);
    job1.setName("Test Job Name");

    Job job2 = new Job();
    job2.setId((long) 1235);
    job2.setName("Test Job Name 2");

    jobList.add(job1);
    jobList.add(job2);
    return jobList;
}
    public class Job implements Serializable {

    private static final long serialVersionUID = 4979685043689356058L;
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}


public class Patient implements Serializable {

    private static final long serialVersionUID = -1541400280884340541L;
    private String name;
    private int age;
    private Long patientId;

    public Long getPatientId() {
        return patientId;
    }

    public void setPatientId(Long patientId) {
        this.patientId = patientId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int i) {
        this.age = i;
    }

}
     <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}">