복붙노트

[SPRING] 흐름 외부에서 Spring Webflow FlowScope 요소에 어떻게 액세스 할 수 있습니까?

SPRING

흐름 외부에서 Spring Webflow FlowScope 요소에 어떻게 액세스 할 수 있습니까?

편집 : 나는이 물음에 어떤 물기를 얻지 않았다, 그래서 나는 조금 더 세부 사항을 추가하고있다.

스프링 웹 플로우 앱 (버전 2.3.2)이 있습니다. Flow (흐름 자체가 아닌) 단계 중 하나의 유효성 검사 내부에서 여러 FlowScope 객체에 액세스해야합니다. 당신은 이것이 간단 할 것이라고 생각 하겠지만, 나는 그것을 해독 할 수 없었습니다.

Spring Webflow는 다양한 범위에 액세스하는 데 사용할 수있는 일련의 특수 EL 변수를 제공하지만 흐름 자체 내부에서만 사용할 수 있습니다. 커스텀 Spring 유효성 검사기 안에는 접근 할 수있는 방법이 없다.

@Component
public class MyObjectValidator {

    @Autowired
    ApplicationContext context;

    public void validateMyObject(MyObject myObject, Errors errors) {

        FlowScope flowScope = context.someMagicFunction();  //  <---- UNKNOWN  
        MyOtherObject otherObject = flowScope.get("otherObject");  

        if (incrediblyComplexValidation(myObject, otherObject) {
            errors.rejectValue("myField","validation.fail","Your object failed validation.");
        }
    }
}

보시다시피 Spring Webflow Validator 내부에는 유효성을 검사해야하는 객체를 제외한 모든 객체에 대한 직접적인 외부 연결이 없습니다. flowScope에서 다른 객체에 접근해야합니다. 이상적으로는 ApplicationContext 나 ​​다른 환경 적 특성을 통해 이러한 다른 객체에 접근 할 수있는 방법이 있어야합니다.

누구든지 이것에 대한 답을 알고 있습니까?

해결법

  1. ==============================

    1.요청 고유의 statecurrent 웹 응용 프로그램 컨텍스트에 대한 RequestContext 컨텍스트 보유자에서 범위 콩을 가져올 수 있습니다. 유효성 검사기 메소드에서 요청 컨텍스트에 대한 액세스 권한은 다음과 같습니다.

    요청 고유의 statecurrent 웹 응용 프로그램 컨텍스트에 대한 RequestContext 컨텍스트 보유자에서 범위 콩을 가져올 수 있습니다. 유효성 검사기 메소드에서 요청 컨텍스트에 대한 액세스 권한은 다음과 같습니다.

        import org.springframework.webflow.execution.RequestContext;
        import org.springframework.webflow.execution.RequestContextHolder;
    
        RequestContext requestContext = RequestContextHolder.getRequestContext();
        requestContext.getFlowScope().get("objectYouAreLookingFor");
    
  2. from https://stackoverflow.com/questions/22462077/how-can-i-access-spring-webflow-flowscope-elements-outside-the-flow by cc-by-sa and MIT license