我是一個struts新手。我有一個Form
,Action
和jsp view
。如何在struts 1.x中編寫視圖
<form-beans>
<form-bean name="bookEventForm" type="com.example.BookEventForm" />
</form-beans>
<action path="/bookEvent"
type="com.example.BookEventAction"
name="bookEventForm"
input="/WEB-INF/jsp/bookEvent.jsp"
scope="request">
<forward name="success" path="/WEB-INF/jsp/bookEvent.jsp" />
</action>
一個事件形式的屬性是Country
,所以我在Action
做的第一件事是:
request.setAttribute("countries", countriesDao.getAll());
視圖
我渲染使用select元素:
<html:select property="..." >
<html:optionsCollection name="countries" ... />
</html:select>
這工作正常,直到我加ActionForm#validate做一些驗證檢查(與國家無關,例如surname!= null)。
通過struts規範,只要有一個錯誤Action#execute
永遠不會執行。因此,countries
集合不再處於請求中,並且視圖呈現具有空的select元素。
我知道我很可能錯過了struts的一些核心概念。一位朋友建議在視圖中提供dao,以便我可以隨時訪問這些國家,但我通常更喜歡在任何JSP「代碼」執行之前準備視圖(預取db數據)。
任何想法?
在validate()方法中添加加載的國家確實有效,但它確實違反了分層和MVC。 – cherouvim 2011-01-20 14:02:15