大家好,我将这个表单发送到了一个可在Java项目的表单字段中输入的名称的烘烤器中-我正在使用Apache Tomcat v7.0来运行它(servlet),但是由于某种原因,我在roaster文件中,它告诉我表单文件中定义的方法不存在。

表单的代码:

<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>


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

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

最佳答案

因此,我假设您向我们展示的是来自两个不同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,则具有用于输出Band1.bname值的正确语法。我猜不是。您将需要以某种方式将请求参数转换为Band的实例或Band1的任何类。

通常,尽管您可以,但不会将其发布到另一个jsp页面。这种事情通常由Servlet处理,或者更好的是由Struts或Spring MVC等Web框架中的Controller类处理。然后,Servlet或Controller通常将呈现jsp页面,并向其发送Band对象以供参考。

07-26 07:36