大家好,我将这个表单发送到了一个可在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对象以供参考。