Fork me on GitHub

Programming Design Notes

在 JSP 使用 Expression Language 拿取 Spring Bean 內容

| Comments

有好一陣沒有更新這個部落格了,這數星期也在製作一個個人項目,忙得沒時間打文章,現在這個項目的主要功能也完成了,可遲一點再更新。

有使用 Spring Framework 的也知道 Spring bean 在不同的 bean 內也輕易存取得到,方法亦有幾種。

例如使用 Java Annotation 的方式去自動注入
@Autowired
private MyBean bean;

又可以使用 XML 的方式去注入
<bean id="person" class="org.springframework.beans.TestBean" scope="prototype">
<property name="age" value="10"/>
<property name="spouse">
<bean class="org.springframework.beans.TestBean">
<property name="age" value="11"/>
</bean>
</property>
</bean>

又可以在執行階段動態取得 Spring bean
ApplicationContext context =  WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Object bean = context.getBean("myBean");

那在 JSP 中怎麼取得 Spring bean,你可以使用第三種方式去取得 bean,但我不喜歡在 JSP 中插入 Java 程式碼,所以我會使用以下方法。

在設定 Spring web mvcviewResolver 時加入一個參數就可以了:




就是這樣簡單,你就可以在 JSP 用以下方式拿到 bean 的內容:
<c:out value="${ bean.value }" />

除了這個方法外,你亦可以幾 Spring bean 放到 HttpServletRequest 內,令 JSP 可以存取得到,但沒有以上方法簡單直接。

相關書籍: Spring Recipes: A Problem-Solution ApproachSpring in ActionSpring Recipes: A Problem-Solution Approach, Second Edition