我想把systemProperties注入到JSF Managed Bean (JSF 1.2)中。
唯一可以做到这一点的方法是,如果我使用托管属性或创建systemProperties bean并将其注入我想要的托管bean,对吗?我不能使用@Value;它必须是春豆才能让我这么做。
#{systemProperties['databaseName']}
#{systemProperties.databaseName}
管理财产
<managed-bean>
<managed-bean-name>fooUI</managed-bean-name>
<managed-bean-class>test.foo</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>systemPropertyExample</property-name>
<value>#{systemProperties['systemPropertyExample']}</value>
</managed-property>
</managed-bean>
JSF管理bean 可以是spring管理的。你只需要在faces-config.xml中配置一个spring特定的<el-resolver>
:
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
它将在spring上下文中解析托管bean(当然,您需要在web.xml中启动spring的ContextLoaderListener
,但我假设您有)。然后你可以在你的jsf bean中使用@Value
、依赖注入等。
唯一的区别是您将使用@Controller @Scope("request")
而不是xml来定义它们。
您可以用@Configurable
注释JSF Bean,然后您可以像使用spring Bean一样使用它。(注意,这需要使用AspectJ)