刷新JSP页面后如何使表数据持久化

时间:2014-01-11 10:43:10

标签: java javascript jsp servlets

我有一个动态表,可以从数据库中生成和填充。我想让整个表数据或表持久化,这样如果页面在简单的提交或单击按钮中刷新,它就不会消失。我尝试这样做是为了学习目的,如果它可能,但没有运气

<form id="form3" value="inherit" method=post>
     <input type="hidden" name="nm" value="inherited">
    <Table id="dummy" name="table_dummy" border="1">
  <tr>
        <th>Category Name</th>
        <th>Header2</th>
        <th>Libraries</th>
        <th>Student</th>
        <th>Courses</th>
     </tr>
    <c:forEach var="i" begin="0" end="${result.getCategory().size() - 1}">
        <TR>
            <TD id="getC" name="td1">
                    ${result.getCategory().get(i)}
            </TD>

            <TD id='td1' name='td_n'>
                    ${result.getHeader().get(i)}
            </TD>
            <TD>
                    ${result.getLibs().get(i)}
            </TD>
            <TD>
                    ${result.getStudents().get(i)}
            </TD>
            <TD>
                    ${result.getCourses().get(i)}
            </TD>

        </TR>
    </c:forEach>
</TABLE>

//以下是我试图用来使其持久化的逻辑。

<% String trial = request.getParameter("td_n"); %> 

<script>
   document.getElementById("td1").value = '<% out.print(trial); %>
</script>

但是,如果我尝试使用Table,它就无效,但如果我尝试使用<Form>之类的任何<Select>元素,<input>它就能正常工作。

任何评论/提示/链接或任何有用的信息都会非常棒!

[编辑] 根据讨论更新代码:

  1. 拥有从数据库填充的动态表,一旦点击提交按钮,就会调用servlet建立与POSTGRESQL的连接并发送响应。
  2. 2.此外,使用单选按钮单击功能生成另一个表,该功能再次调用相同的servlet并生成上面显示的新表。

    <Servlet>旁边代码:

     if("inherited".equals(nm)){
    
                   InheritedResponse ir = null;
                    InheritedDAOImpl iad = new InheritedDAOImpl();
                    String sql ="select * from testTable";
                    ir = iad.getInheritData(sql);
                    System.out.println(sss);
                    req.setAttribute("result",ir);
                    Util.forward(req,resp,this, "/practice/trial.jsp");
    

2 个答案:

答案 0 :(得分:0)

  1. TD不是表单的元素。您只能提交input等表单元素。
  2. 然后最好在页面上使用JSTL而不是scriptlet。
  3. TD没有属性value。对于TD,它应该是:

    document.getElementById("td1").innerHTML='some value';

答案 1 :(得分:0)

以这种方式使用input元素(仅作为示例):

<pre>
<input type="text" value="${result.getCourses().get(i)}">
</pre>