在验证器中检测 Spring Web Flow 转换事件 ID
Detect Spring Web Flow transition event id in Validator
我使用 Spring Webflow 2,我需要在我的验证器中检测触发的转换事件 ID。
在我的flow.xml
<view-state id="stepFinal" view="/registration/consultant/registr-step-final" model="consultant">
<transition on="addSkill" to="stepFinal" validate="true" bind="true"/>
<transition on="deleteSkill" to="stepFinal" validate="true" bind="true"/>
<transition on="back" to="stepOne" validate="true" bind="true"/>
<transition on="preview" to="stepPreview" validate="true" bind="true"/>
</view-state>
我的 "consultant" 模型验证器
@Component
public class ConsultantValidator implements Validator {
public boolean supports(Class clazz) { return clazz.equals(ConsultantRegistrationModel.class); }
public void validate(Object object, Errors errors) {
ConsultantRegistrationModel consultantModel = (ConsultantRegistrationModel) object;
// My validations here
// Here I want to detect the event id which was fired.
// For example (see in my flow.xm)
// I have:
// transition on="addSkill"
// transition on="deleteSkill"
// transition on="back"
// transition on="preview"
// I want to detect here if is it "addSkill" or "deleteSkill" or "back" or "preview"?
// Any solutions?
}
我希望我在代码片段中的注释中非常清楚。
任何帮助将不胜感激。
还有
RequestContextHolder.getRequestContext().getCurrentEvent()
没有帮助,因为它 returns null
至于
RequestContextHolder.getRequestContext().getCurrentView().getUserEventState()
它实际上包含事件 ID,但它的 getter 受到保护,所以我无法获取它。
这不是最好的解决办法,但至少是解决了问题。
这就是我获得转换 ID 和视图状态 ID 的方式。
RequestContextHolder.getRequestContext().getCurrentView().getUserEventState().toString().split("eventId = ")[1].split("mappingResults")[0].replaceAll("[^a-zA-Z]", "");
RequestContextHolder.getRequestContext().getFlowExecutionContext().getActiveSession().getState().getId();
我使用 Spring Webflow 2,我需要在我的验证器中检测触发的转换事件 ID。
在我的flow.xml
<view-state id="stepFinal" view="/registration/consultant/registr-step-final" model="consultant">
<transition on="addSkill" to="stepFinal" validate="true" bind="true"/>
<transition on="deleteSkill" to="stepFinal" validate="true" bind="true"/>
<transition on="back" to="stepOne" validate="true" bind="true"/>
<transition on="preview" to="stepPreview" validate="true" bind="true"/>
</view-state>
我的 "consultant" 模型验证器
@Component
public class ConsultantValidator implements Validator {
public boolean supports(Class clazz) { return clazz.equals(ConsultantRegistrationModel.class); }
public void validate(Object object, Errors errors) {
ConsultantRegistrationModel consultantModel = (ConsultantRegistrationModel) object;
// My validations here
// Here I want to detect the event id which was fired.
// For example (see in my flow.xm)
// I have:
// transition on="addSkill"
// transition on="deleteSkill"
// transition on="back"
// transition on="preview"
// I want to detect here if is it "addSkill" or "deleteSkill" or "back" or "preview"?
// Any solutions?
}
我希望我在代码片段中的注释中非常清楚。 任何帮助将不胜感激。
还有
RequestContextHolder.getRequestContext().getCurrentEvent()
没有帮助,因为它 returns null
至于
RequestContextHolder.getRequestContext().getCurrentView().getUserEventState()
它实际上包含事件 ID,但它的 getter 受到保护,所以我无法获取它。
这不是最好的解决办法,但至少是解决了问题。 这就是我获得转换 ID 和视图状态 ID 的方式。
RequestContextHolder.getRequestContext().getCurrentView().getUserEventState().toString().split("eventId = ")[1].split("mappingResults")[0].replaceAll("[^a-zA-Z]", "");
RequestContextHolder.getRequestContext().getFlowExecutionContext().getActiveSession().getState().getId();