有使用 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 mvc 的 viewResolver 時加入一個參數就可以了:
就是這樣簡單,你就可以在 JSP 用以下方式拿到 bean 的內容:
<c:out value="${ bean.value }" />
除了這個方法外,你亦可以幾 Spring bean 放到 HttpServletRequest 內,令 JSP 可以存取得到,但沒有以上方法簡單直接。
相關書籍: