0

嘿伙计们,我有这个表单被发送到一个烘焙器,它将获取在 Java 项目中输入表单字段的名称 - 我正在使用 Apache Tomcat v7.0 来运行它(servlet) 出于某种原因,虽然当我在烘焙文件中,它告诉我表单文件中定义的方法不存在。

表格代码:

<form action="Band_roster" method="post">
  <table cellspacing="5" border="0">
    <tr>
      <td align="right">Band 1:</td>
      <td><input type="text" name=Band1.setbname()></td>
    </tr>
    <tr>
      <td align="right">Band 2:</td>
      <td><input type="text" name=Band2.setbname()></td>
    </tr>
    <tr>
      <td align="right">Band 3:</td>
      <td><input type="text" name=Band3.setbname()></td>
    </tr>
    <tr>
      <td align="right">Band 4:</td>
      <td><input type="text" name=Band4.setbname()></td>
    </tr>
    <tr>
      <td align="right">Band 5:</td>
      <td><input type="text" name=Band5.setbname()></td>
    </tr>
    <tr>
      <td align="right">Band 6:</td>
      <td><input type="text" name=Band6.setbname()></td>
    </tr>
    <tr>
      <td align="right">Band 7:</td>
      <td><input type="text" name=Band7.setbname()></td>
    </tr>
    <tr>
      <td align="right">Band 8:</td>
      <td><input type="text" name=Bandb.setbname()></td>
    </tr>

    <tr>
      <td></td>
      <td><br><input type="submit" value="Submit"></td>
    </tr>
  </table>
  </form>

烘焙机代码:

<table cellspacing="5" cellpadding="5" border="1">
        <tr>
            <td align="right">Band1:</td>
            <td><%= Band1.getBname() %></td>
        </tr>
        <tr>
            <td align="right">Band2:</td>
            <td><%= Band2.getBname() %></td>
        </tr>
        <tr>
            <td align="right">Band3:</td>
            <td><%= Band3.getBname() %></td>
        </tr>
        <tr>
            <td align="right">Band4:</td>
            <td><%= Band4.getBname() %></td>
        </tr>
        <tr>
            <td align="right">Band5:</td>
            <td><%= Band5.getBname() %></td>
        </tr>
        <tr>
            <td align="right">Band6:</td>
            <td><%= Band6.getBname() %></td>
        </tr>
        <tr>
            <td align="right">Band7:</td>
            <td><%= Band7.getBname() %></td>
        </tr>
        <tr>
            <td align="right">Band8:</td>
            <td><%= Band8.getBname() %></td>
        </tr>

    </table>

    <p>Ready to Rock</p>

    <form action="Band.jsp" method="post">
        <input type="submit" value="submit">
    </form>

烘焙文件是我收到错误的文件 - Band8.getBname() 告诉我它无法解决,与 tr 中的每个 Band'number' 相同。

让我知道这是否有意义,并感谢您的帮助!

4

1 回答 1

1

因此,我假设您向我们展示的是来自两个不同 jsp 页面的源代码片段,并且第一个 jsp 页面呈现的 html 以某种方式发布到呈现第二个 jsp 页面的内容。

但是,您没有提到您是否正在使用某种 Web 框架、编写 servlet 或其他什么……也许您可以启发我们。

无论如何,您似乎缺少一些基本概念:

第一个 jsp 页面(带有表单)似乎无法正常工作。

据推测,Band1、Band2 等对象是在第一个 jsp 页面的顶部定义的,但您没有显示出来。

第一个 jsp 页面中输入字段的语法<input type="text" name=Band1.setbname()>不正确。例如,假设 Band1 是一个在页面中定义的对象,那么输入字段应该是这样的:<input type="text" name="${Band1.bname}">,如果 Band1 有一个 getBname() 方法,它会将输入字段的值初始化为调用的结果那个方法。但是,根据您对“setbname”的使用,我猜您希望它获取输入字段的值并使用它来设置 Band1 中属性的值。不幸的是,它不是这样工作的。发生的情况是表单字段中的值作为请求参数发送到第二页。

在第二个 jsp 页面中,您可以使用正确的语法来输出 Band1.bname 的值,假设在该页面中定义了 Band1。我猜它不是。您需要以某种方式将请求参数转换为 Band 的实例,或 Band1 的任何类。

通常,不会 POST 到另一个 jsp 页面(尽管您可以)。这类事情通常由 servlet 处理,或者更好的是,由 Struts 或 Spring MVC 等 Web 框架中的 Controller 类处理。然后,servlet 或控制器通常会呈现 jsp 页面,将 Band 对象发送给它以供参考。

于 2012-12-14T02:59:30.727 回答