我是一个struts新手。我有一个Form
,一个Action
和一个jsp view
。
<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());
在视图中,我使用以下方法渲染选择元素:
<html:select property="..." >
<html:optionsCollection name="countries" ... />
</html:select>
这工作正常,直到我添加ActionForm#validate来做一些验证检查(与国家无关,例如姓氏!= null)。
通过 struts 规范,一旦出现错误,就Action#execute
永远不会执行。因此,countries
集合不再在请求中,视图呈现为空的选择元素。
我知道我很可能错过了一些 struts 的核心概念。一位朋友建议让 dao 在视图上可用,这样我就可以随时获取国家/地区,但我通常更喜欢在执行任何 JSP“代码”之前准备视图(预取数据库数据)。
有任何想法吗?