복붙노트

[SPRING] Struts2의 모든 뷰에 객체를 어떻게 노출시킬 수 있습니까?

SPRING

Struts2의 모든 뷰에 객체를 어떻게 노출시킬 수 있습니까?

Struts2와 Freemarker 템플릿 및 Spring4를 사용하는 웹 응용 프로그램이 있습니다.

모든 페이지에서 렌더링해야하는 .properties 파일에 저장되는 구성 문자열이 몇 개 있습니다 (예 : 버전 문자열이 포함 된 CDN 경로). 현재 이러한 속성은 스프링에서 읽고 org.springframework.core.env.Environment의 인스턴스에 저장됩니다.

내 모든 환경에서 내 환경 인스턴스에 액세스 할 수있는 쉬운 방법이 있습니까? 기본 클래스에 getEnvironment () 메소드가있는 조치 상속을 통해이를 수행하는 다른 애플리케이션이 있습니다. 모든 액션이 기본 클래스를 확장해야하기 때문에이 접근법을 싫어합니다.

해결법

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

    1.로직을 빈 (예 : Configuration.java)에 넣은 다음 필요한 모든 조치에 스프링 DI, Java EE CDI 등을 통해 주입하고 Getter를 통해 노출하십시오.

    로직을 빈 (예 : Configuration.java)에 넣은 다음 필요한 모든 조치에 스프링 DI, Java EE CDI 등을 통해 주입하고 Getter를 통해 노출하십시오.

    그러나 상속 접근 방식을 과소 평가하지 않을 것입니다. 설명하는 동안 사양을 추가하여 상속 트리를 작성할 수 있기 때문에 설명하는 것만 큼 나쁘지는 않습니다. 하나의 BaseAction, 일부 Sub-BaseActions, 일부 하위 서브 ... 더 읽어보십시오.

    나중에 BaseAction을 형제 관계로하여 BaseAction에 넣은 것이 필요하다는 것을 발견 한 경우, 상위 BaseAction에서 첫 번째 것까지 모두 한 레벨 위로 이동하십시오.

  2. ==============================

    2.모든 조치를 가로채는 인터셉터를 작성하고이 인터셉터를 사용자 정의 인터셉터 스택에 추가하십시오. 이 스택은 기본 인터셉터 스택을 만들어야합니다.

    모든 조치를 가로채는 인터셉터를 작성하고이 인터셉터를 사용자 정의 인터셉터 스택에 추가하십시오. 이 스택은 기본 인터셉터 스택을 만들어야합니다.

    <interceptors>
      <interceptor name="myinterceptor" class="com.company.interceptor.MyInterceptor"/>
      <interceptor-stack name="customStack">
        <interceptor-ref name="myinterceptor"/>
        <interceptor-ref name="defaultStack"/>
      </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="customStack"/>
    

    myinterceptor의 구현에서 애플리케이션 컨텍스트에서 Bean을 가져 와서 값 스택에 놓으십시오. 모든 JSP에서 OGNL을 사용하여 값 스택의 객체에 액세스 할 수 있습니다.

  3. ==============================

    3.상속 솔루션이 문제에 잘 맞는다고 생각합니다. 모든 컨트롤러에는 이러한 속성이 필요하므로 가장 논리적이고 가장 좋은 방법입니다.

    상속 솔루션이 문제에 잘 맞는다고 생각합니다. 모든 컨트롤러에는 이러한 속성이 필요하므로 가장 논리적이고 가장 좋은 방법입니다.

    Roman과 같은 인터셉터 솔루션을 시도해 볼 수는 있지만 인터셉터는 구성하기가 약간 까다 롭고 Struts2 오류 로그는 인터셉터 내부에서 문제가 발생하고 큰 응용 프로그램이있을 때 실제로 도움이되지 않습니다. 상속과 함께 사용하는 대신 모든 작업을 시작하면서 처리 논리.

  4. from https://stackoverflow.com/questions/35682125/how-can-i-expose-an-object-to-all-of-my-struts2-views by cc-by-sa and MIT license