我是一个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