2017-09-19 12 views
0

selectPatient状態からselectDoctor状態に遷移中、Spring webflowはカスタムバリデータPatientValidatorを使用してPatientモデルを検証しません。ここでSpring WebFlowは実装されたバリデータを使用していません

は私のコードは、私が使用している場合でも

Patient.java

@Data 
@Entity 
public class Patient implements Serializable { 
    private static final long serialVersionUID = -5116169782847291743L; 

    ... 
} 

PatientValidator.java

@Component 
public class PatientValidator extends FieldValidator { 
    public PatientValidator() { } 

    public void validateSelectPatient(Patient patient, Errors errors) { 
     System.out.println("PatientValidator . validateSelectPatient"); 
    } 

    public void validateSelectDoctor(Patient patient, Errors errors) { 
     System.out.println("PatientValidator . validateSelectDoctor"); 
    } 
} 

提出要求-flow.xmlを

<?xml version="1.0" encoding="UTF-8"?> 
<flow xmlns="http://www.springframework.org/schema/webflow" 
     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"> 

    <secured attributes="ROLE_OFFICER" match="any"/> 

    <on-start> 
    <evaluate expression="submitRequestFlow.getPatient()" result="flowScope.patient"></evaluate> 
    </on-start> 


    <view-state id="selectPatient" view="flows/requests/new/select-patient" model="patient"> 
    <transition on="select" to="selectDoctor"></transition> 
    </view-state> 


    <view-state id="selectDoctor" view="flows/requests/new/select-doctor"> 
    <transition on="select" to="selectTestType"></transition> 
    <transition on="back" to="selectPatient"></transition> 
    </view-state> 


    ... 


    <end-state id="finishFlow" view="externalRedirect:#{uri.get('requests')}"> 
    <output name="success" value="'Request has been added successfully'"/> 
    </end-state> 

    <end-state id="cancelFlow" view="externalRedirect:#{uri.get('requests')}"> 
    </end-state> 

    <global-transitions> 
    <transition on="cancel" to="cancelFlow" history="discard" bind="false" validate="false"></transition> 
    </global-transitions> 

</flow> 

です内部の検証メソッドPatient.javaでは、Webflowがそれを使用します。

@Data 
@Entity 
public class Patient implements Serializable { 
    private static final long serialVersionUID = -5116169782847291743L; 

    ... 

    public void validateSelectPatient(Errors errors) { 
     errors.reject("NoResultFound"); 
    } 
} 

は、私はそれだけでは初めての作品、カスタム検証ではなく、モデルのいずれかを使用する必要がありますが、私は春のブートプロジェクトを再起動した後、それはもう動作しませんね。


更新#1

私は

  • 春ブーツ1.5.6.RELEASE
  • 春のWebflow 2.4.5.RELEASE
  • Thymeleaf 3.0.7を使用しています。リリース
  • Thymeleaf SpringSecurity4 3.0.2.RELEASE

答えて

関連する問題