在Spring MVC中,我可以使用JstlView的exposedContextBeanNames(或exposeContextBeansAsAttributes)在JSP中访问我的bean.例如,然后,在我的JSP中我可以编写($ {properties.myProperty).但是,当相同的JSP是切片视图的一部分时,无法访问这些属性.是否可以正确配置Tiles或以其他方式访问这些属性?
我正在使用Spring MVC 3.0.2和Tiles 2.2.1.这是我的一些配置:
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="order" value="1"/>
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="order" value="2"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="exposedContextBeanNames">
<list><value>properties</value></list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
编辑:我已经实施了Skaffman的解决方案.
TilesExposingBeansViewResolver.java:
package es.kcsolutions.util.spring.servlet.view;
import org.springframework.web.servlet.view.*;
public class TilesExposingBeansViewResolver extends UrlBasedViewResolver {
private Boolean exposeContextBeansAsAttributes;
private String[] exposedContextBeanNames;
public void setExposeContextBeansAsAttributes(boolean exposeContextBeansAsAttributes) {
this.exposeContextBeansAsAttributes = exposeContextBeansAsAttributes;
}
public void setExposedContextBeanNames(String[] exposedContextBeanNames) {
this.exposedContextBeanNames = exposedContextBeanNames;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws …Run Code Online (Sandbox Code Playgroud) 目前我需要spring bean的jsp 2.0标签使用此代码:
ac = WebApplicationContextUtils.getWebApplicationContext( servletContext);
ac.getBeansOfType(MyRequestedClass.class);
Run Code Online (Sandbox Code Playgroud)
我刚刚得到第一个匹配的bean.
这段代码运行正常,但是有一个不希望出现的缺点,我花了大约一半的页面渲染时间来查找spring bean,因为每次调用一个标签时都会发生这种情况.我想也许可以将bean放入应用程序范围或至少是会话范围.但是,处理这个问题的最聪明方法是什么?
我是一个非常新的基于mvc 3注释的应用程序.我有两个属性文件 - WEB-INF\resources\general.properties,WEB-INF\resources\jdbc_config.properties
现在我想通过spring-servlet.xml配置它们.我怎么能做到这一点?
一般来说,性能,
label.username = User Name:
label.password = Password:
label.address = Address:
Run Code Online (Sandbox Code Playgroud)
...等jdbc_config.properties,
app.jdbc.driverClassName=com.mysql.jdbc.Driver
app.jdbc.url=jdbc:mysql://localhost:[port_number]/
app.jdbc.username=root
app.jdbc.password=pass
Run Code Online (Sandbox Code Playgroud)
- -等等
如果我想在我的jsp页面中获取label.username和app.jdbc.driverClassName,我该如何为它们编码?
我还想从我的服务中访问这些属性值.如何使用服务类或控制器类中的方法级别的相应键获取这些属性值?