从Java中的形式获取价值的问题 - Apache Tomcat



嘿伙计们,我有这个表单被发送到烘焙机,该烘焙机将获取输入到 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 中的每个乐队"数字"相同。

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

因此,我假设您向我们展示的是来自两个不同 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处理,或者更好的是,由Web框架(如Struts或Spring MVC)中的控制器类处理。然后,servlet 或控制器通常会呈现 jsp 页,向其发送 Band 对象以供引用。

最新更新