Формирование HTML-формы JSP на основе метаданных JDBC - PullRequest
1 голос
/ 21 апреля 2011

Кто-нибудь может дать мне хорошую идею или подсказку (не инструмент), как я могу реализовать автоматическую генерацию HTML-форм на основе метаданных JDBC? Я решил это раньше в отдельной программе на Java - теперь я хочу расширить идею в html. Я НЕ хочу использовать Spring, Wicket или JSF для решения проблемы, я хочу сделать это самостоятельно, чтобы учиться с нуля. Я действительно много искал, я нашел много вещей, но ничего, что могло бы ответить на мой вопрос. Но я уверен, что эта проблема была решена в прошлом дюжину раз.

Спасибо Alex

1 Ответ

0 голосов
/ 21 апреля 2011

Создайте класс servlet , позвольте ему вызывать вашу "отдельную программу Java" в методе doGet(), получите из него нужные данные в виде некоторой 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"> и соберет данные в методе doPost().

...