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