我正在使用Struts2创建一个项目。
我是按照以下方式在struts.xml中设置global-results
标记:
<global-results>
<result name="LOGIN" type="redirect">https://www.example.com</result>
</global-results>
我想知道我是否可以从任何其他属性文件中读取url,因此如果将来更改url,我只需要在属性文件中进行更改。如果可以,那我怎么能实现这个目标呢? struts2中有类似PropertyPlaceholderConfigurer
类的spring框架吗?
答案 0 :(得分:1)
我想出了一种实现这一目标的方法:单独使用Struts,你无法读取属性名称 - 值对,但是可以通过Spring和动作类来实现。
使用Spring PropertySourcesPlaceholderConfigurer
,我们可以使用.properties
从${name.in.prop.file}
文件读取值,因此我们可以在构造Action
bean时添加参数,如下所示:
<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>
并且,在Action类中定义myWebsiteURL
类型java.lang.String
及其getter / setter,这样Spring可以在创建Action类时在myWebsiteURL
中注入所需的值。 / p>
最后,使用struts.xml
在${myWebsiteURL}
中调用此值,这样做(为什么它的工作仍有待调查,但它有效)。例如,您可以这样写:
<action name="goToSomeSite" method="goToSomeSite" class="myAction">
<result name="success" type="redirect">${myWebsiteURL}</result>
....
</action>
我唯一不理解的是如何评估${myWebsiteURL}
。春天? Struts的? JSTL? (我的项目中没有包含JSTL库)