【问题标题】:How to persist another table from a resultList singly如何从结果列表中单独保存另一个表
【发布时间】:2018-05-02 11:57:14
【问题描述】:

我已经尝试了一周了。我的会话 bean 中有一个工作方法非常好,可以显示 MySQL 表中的用户列表。

我想使用单选输入类型选择特定用户并将他的详细信息插入到另一个表中。

我的问题是,每次尝试时,显示的数据的第一个值都会进入表格,而不是我在单选输入类型上单击其 id 的数据。我不知道出了什么问题。

    <%

    if (request.getParameter("submit) != null 
     && request.getParameter("id") != null){              

        String id   = request.getParameter("id");             
        String vote = request.getParameter("vote");
        String name = request.getParameter("name");
        String code = request.getParameter("code");
        String msg  = "";

        try {
            Result one = new Result(id, vote, name, code);
            sl.castvote(one);
            msg = "User successfuly added";
        } catch (Exception e) {
            msg ="error";
        }
    }

    %>
      <% List one = sl.viewAllContestants();
         Iterator two = one.iterator();
      <%
         while(two.hasNext()) {
             Contestants type = (Contestants) two.next();
       %>

         <form action="" method="post">

         <input type="radio" name="id" class="form-control" value="<%=type.getId()%>"  />
         <input type="text"  name="vote" value="1" hidden />
         <input type="text"  name="dept" value="<%=type.getDepartment() %>" hidden />
         <input type="text"  name="col"  value="<%=type.getCollege() %>" hidden /> 
         <input type="text"  name="pos"  value="<%=type.getPosition() %>" hidden />
         <input type="text"  name="type" value="<%=type.getElectionType()%>" hidden />
         <input type="text"  name="name" value="<%=type.getName() %>" hidden  />
         <input type="text"  name="code" value="<%=type.getCode() %>" hidden />
         <input type="submit" name="submit" />

         </form>

         <% } %>    

【问题讨论】:

    标签: java jsp enterprise


    【解决方案1】:

    阅读该 scriptlet 有点困难,我可能是错的,但我在这里看到的是您的结果页面有这样的内容:

    <form>
      <radio name="id" value="some value" />
      some other fields
      <submit>
    </form>
    

    然后是另一种形式:

    <form>
      <radio name="id" value="some value" />
      some other fields
      <submit>
    </form>
    

    还有一个用于迭代器中的下一个。这基本上不是正确的方法。首先,您有不同形式的单选按钮的不同值。因此,选择哪一个并不重要:) 此外,表单没有不同的名称,这实际上破坏了 html 的工作方式。

    所以为了实现这一点(我相信它会起作用,即使它不是一个好主意)你可以为不同的形式赋予不同的名称。所以它们变成了&lt;form action="" method="post" name="firstForm"&gt; 之类的东西。在这种情况下,您可以通过将其更改为来使提交仅提交其所在的表单:

    <button type="submit" form="firstForm" value="Submit">Submit</button>
    

    因为在您当前的设计中,所有提交按钮都会提交第一个表单;)

    • 为了给您一些启发,也许正确的方法是在页面中使用一个表单而不是多个表单。但在您的场景中,它可能需要一些 javascript 或重新设计页面。

    【讨论】:

    • 谢谢兄弟......但我只有一个表格......我只是在值标签中显示了所有成员的值......并且从表格中得到相同的结果并输入它们到另一张桌子。但它没有得到我想要的特定用户。它只获得循环中显示的第一个值
    • 嗯,我看到它的方式是循环迭代器并为每个项目创建一个表单?如果表单没有名称,您只需提交第一个。
    • 哇!现在我明白你的意思了。那么我如何在迭代器中为每个输入分配名称
    • 使用迭代对象的属性。或者您可以添加一些 int 索引并将其用于索引。问题是,如果您有一个大表单,它将提交所有内容(所有输入),而您只想通过单选按钮提交选定的表单(如果我理解正确的话)。因此,您可以保留多个表单,但为每个表单分配不同的名称,并为其提交按钮分配相同的名称
    • 在浏览器中查看生成的源代码,看看我的意思
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多