访问定义文件中tile 3表达式中的Spring 3 bean

时间:2013-05-31 15:20:42

标签: spring tiles

我正在使用 Spring 3.2 tiles 3.0

我想从类似

的spring bean属性设置tile定义中属性的值
<put-attribute name="headTitle" expression="${msgs['serviceGroups.title']}" />

msgs是 HashMap ,它在spring应用程序上下文中定义

<bean id="msgs" class="qa.gov.moi.eservices.web.util.MessageSourceMapAdapter">
    <constructor-arg name="messageSource">
        <ref bean="messageSource"/>
    </constructor-arg>
</bean>

这是spring-tiles config

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles-defs.xml</value>
        </list>
    </property>
</bean>

这是模板default.jsp

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title><tiles:getAsString name="headTitle"/></title>


</head>
<body>
    <div id="wrapper">
        <div id="container">
            <div id="top_header">
                <tiles:insertAttribute name="heading" />
                <tiles:insertAttribute name="menuTab" />
                <tiles:insertAttribute name="genralizationTab" />
            </div><!-- top_header -->
            <tiles:insertAttribute name="content" />
            <tiles:insertAttribute name="footer" />
        </div><!-- container -->
    </div><!-- wrapper -->
</body>

当我试图运行应用程序时,我得到以下异常

 Uncaught exception created in one of the service methods of the servlet /WEB-INF/jsp/layouts/default.jsp in application eservices. Exception created : java.lang.NullPointerException

除了这个问题,每件事都没问题。

有没有办法让tile bean可以访问tile表达式?

1 个答案:

答案 0 :(得分:0)

问题分为几个小问题:

1 - 第一个是启用tiles来访问spring bean,这可以通过将Spring上下文bean暴露给Tiles视图 - 由mck提供的check this来完成。

2 - 第二个是如何在JSP中呈现属性,使用带有tiles:getAsString的{​​{1}}标记没有值将put-attribute作为{NullPointerException 1}}标记使用定义中提供的值的简单tiles:getAsString来呈现自身,它完全忽略toString()属性,而不是expression使用getAsString评估insertAttribute

expression