【发布时间】:2011-01-19 16:41:48
【问题描述】:
我是一个 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 进行一些验证检查(与国家/地区无关,例如 surname != null)之前,这工作正常。
根据 struts 规范,一旦出现错误,Action#execute 就永远不会执行。因此,countries 集合不再在请求中,并且视图呈现为一个空的选择元素。
我知道我很可能错过了一些关于 struts 的核心概念。一位朋友建议在视图上提供 dao,以便我可以随时获取国家/地区,但我通常更喜欢在执行任何 JSP“代码”之前准备视图(预取 db 数据)。
有什么想法吗?
【问题讨论】:
标签: java model-view-controller jsp struts struts-1