有没有办法用 Struts 填充多个表单并使它们可用于 JSP 页面?
我正在构建一个页面,该页面上有两种不同的表单,需要从数据库预先填充自定义数据。两种表格必须位于同一页面上。
是的,这是可能的。
您可以为此问题指定多个
ActionForm
实现(首选)或仅使用一个 - 无论如何。
<nested:root name="myFirstForm">
<nested:form action="/MyAction.do?method=foo" method="post">
<%-- some code --%>
</nested:form>
<nested:form action="/MyAction.do?method=bar" method="post">
<%-- some code --%>
</nested:form>
</nested:root>
<nested:root name="mySecondForm">
<nested:form action="/MyAction.do?method=foobar" method="post">
<%-- some code --%>
</nested:form>
</nested:root>
来自 Apache Struts 新手常见问题解答:
问:每个 HTML 表单都必须有一个单独的 ActionForm bean 吗?
A:这是一个有趣的问题。作为一个新手,这是一个很好的做法 为每个操作序列创建一个新的 ActionForm。
当您调用 struts 操作时,框架仅创建一种表单。它是与操作相关联的形式。此形式可通过
execute
方法提供的参数获得。
但是,JSP 可能包含多个表单来执行多个操作。如果操作分派到 JSP,那么将只处理一个表单以将标签映射到表单 bean 的属性。
但是,没有什么可以阻止您在操作中创建其他表单实例并通过 EL 表达式在 JSP 中手动处理它。表单 bean 的实例最好通过表单名称放置在请求或会话中,因此可以通过 EL 表达式轻松访问它。