【发布时间】:2011-04-21 07:50:58
【问题描述】:
谁能给我一个好主意或提示(不是工具)我如何实现基于 JDBC 元数据的自动生成 html 表单? 我之前在 Java 独立程序中解决了这个问题 - 现在我想在 html 中扩展这个想法。 我不想使用 Spring、Wicket 或 JSF 来解决问题,我想自己动手从头开始学习。 我已经搜索了很多,我找到了很多东西,但没有任何东西可以回答我的问题。但我相信这个问题已经解决了十几次了。
谢谢 亚历克斯
【问题讨论】:
谁能给我一个好主意或提示(不是工具)我如何实现基于 JDBC 元数据的自动生成 html 表单? 我之前在 Java 独立程序中解决了这个问题 - 现在我想在 html 中扩展这个想法。 我不想使用 Spring、Wicket 或 JSF 来解决问题,我想自己动手从头开始学习。 我已经搜索了很多,我找到了很多东西,但没有任何东西可以回答我的问题。但我相信这个问题已经解决了十几次了。
谢谢 亚历克斯
【问题讨论】:
创建一个servlet类,让它在doGet()方法中调用你的“Java独立程序”,从中获取一些List<Row>形式的想要的数据,放到请求范围内转发请求给JSP
List<Row> rows = yourProgram.list();
request.setAttribute("rows", rows);
request.getRequestDispatcher("/WEB-INF/list.jsp").forward(request, response);
最后在/WEB-INF/list.jsp 中使用JSTL c:forEach 来显示它。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<table>
<tr>
<c:forEach items="${rows[0].columns}" var="column">
<th><c:out value="${column.name}" /></th>
</c:forEach>
</tr>
<c:forEach items="${rows}" var="row">
<tr>
<c:forEach items="${row.columns}" var="column">
<td><input type="text" name="${fn:escapeXml(column.name)}" value="${fn:escapeXml(column.value)}" /></td>
</c:ForEach>
</tr>
</c:forEach>
</table>
让它通过<form method="post"> 提交给一个servlet,并在doPost() 方法中收集数据。
【讨论】: