2015-01-16 7 views
2

Struts2를 사용하여 프로젝트를 만들고 있습니다.struts.xml에서 속성 파일로드 및 읽기

나는 다음과 같은 방법으로 struts.xml에 global-results 태그를 설정하고있다 :

내가 다른 속성 파일에서 URL을 읽을 수 있는지, 알고 싶은
<global-results> 
    <result name="LOGIN" type="redirect">https://www.example.com</result> 
</global-results> 

그래서 만약 미래에 URL 변경되면 속성 파일에서 변경해야합니다. 할 수 있으면 어떻게 할 수 있습니까? struts2에 스프링 프레임 워크의 PropertyPlaceholderConfigurer 클래스가 있습니까?

+1

'struts.xml '이 당신의 설정이다. 구성을 사용하여 구성을 구성하는 이유는 무엇입니까? – BetaRide

+1

어떤 차이가 있습니까? 기본적으로'struts.xml'은 다른 모든 속성 파일 *입니다. –

+0

이 URL 때문에 저장소에 세 가지 버전의 코드를 유지해야합니다. 속성 파일에서 URL을 읽을 수 있다면 프로젝트의 복사본 하나만 유지하면됩니다. 그것은 기본적으로 다른 환경에서 테스트 목적을위한 것입니다. –

답변

1

나는 이것을 달성하는 방법을 알았습니다. Struts만으로는 속성 이름 - 값 쌍을 읽을 수 없지만 Spring과 액션 클래스를 통해 할 수 있습니다. 봄 PropertySourcesPlaceholderConfigurer

우리가 ${name.in.prop.file}.properties 파일에서 값을 읽을 수 있습니다, 그래서 우리는 다음과 같이 Action 콩을 구성 할 때 매개 변수를 추가 할 수 있습니다 함께, 액션 클래스에서 유형 java.lang.String의이 myWebsiteURL

<bean id="someAction" class="path.to.someAction" scope="session"> 
    <property name="manager1" ref="manager1" /> 
    <property name="manager2" ref="manager2" /> 
    <property name="myWebsiteURL" value="${my.website.url}" /> 
</bean> 

을 그리고, 정의 getter/setter를 사용하면 Spring에서 Action 클래스를 만들 때 myWebsiteURL에 필요한 값을 주입 할 수 있습니다.

마지막으로이 값을 struts.xml에서 ${myWebsiteURL}으로 호출합니다 (작동하는 이유는 아직 조사 중이지만 작동 중입니다). 예를 들어, 당신이 쓸 수 있습니다 :

<action name="goToSomeSite" method="goToSomeSite" class="myAction"> 
    <result name="success" type="redirect">${myWebsiteURL}</result> 
    .... 
</action> 

내가 이해하지 못하는 유일한 것은, ${myWebsiteURL} 평가받을 방법이다. 봄? 스트럿츠? JSTL? (나는 프로젝트에 JSTL 라이브러리를 포함하지 않는다)