以下代码来自我的addRemove.jsp 它所服务的目的是拥有表单,一个用于向我的数据库的单词表提交一个新单词,另一个用于删除一个单词。要添加单词,必须填写germanName,gender和englishName。提交后,用户可以看到更新的表格。
在下面,我创建了一个删除表单,用户必须在其中指定germanName值才能删除该单词。该按钮应该再次将用户引导到更新的表。问题是只有第一个提交按钮重定向我。此外,似乎根本不会发生移除。我只提供addRemove.jsp,但如果你认为你也需要查看它,我也可以发布WordDataBean.java文件。
addRemove.jsp
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%-- beans used in this JSP --%>
<jsp:useBean id = "word" scope = "page"
class = "org.me.jsp.beans.WordBean" />
<jsp:useBean id = "wordData" scope = "request"
class = "org.me.jsp.beans.WordDataBean" />
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>Student Registration Form</title>
<style type = "text/css">
body {
font-family: tahoma, helvetica, arial, sans-serif;
}
table, tr, td {
font-size: .9em;
border: 1px groove;
padding: 2px;
background-color: white;
}
</style>
</head>
<body>
<jsp:setProperty name = "word" property = "*" />
<% // start scriptlet
if (word.getGermanName() == null
|| word.getGender() == null
|| word.getEnglishName() == null) {
%> <%-- end scriptlet to insert fixed template data --%>
<form method = "post" action = "addRemove.jsp">
<p>To add a new word complete the form below</p>
<table>
<tr>
<td>German name</td>
<td>
<input type = "text" name = "germanName" />
</td>
</tr>
<tr>
<td>Gender</td>
<td>
<input type = "text" name = "gender" />
</td>
</tr>
<tr>
<td>English Name</td>
<td>
<input type = "text" name = "englishName" />
</td>
</tr>
<tr>
<td colspan = "2">
<input type = "submit"
value = "Submit" />
</td>
</tr>
</table>
</form>
<% // continue scriptlet
} // end if
else {
wordData.addWord(word);
%> <%-- end scriptlet to insert jsp:forward action --%>
<%-- forward to display word list --%>
<jsp:forward page = "wordListView.jsp" />
<% // continue scriptlet
} // end else
%> <%-- end scriptlet --%>
<% // start scriptlet
if (word.getGermanName() == null
|| word.getGender() == null
|| word.getEnglishName() == null) {
%> <%-- end scriptlet to insert fixed template data --%>
<form method = "post" action = "addRemove.jsp">
<p>To remove word complete the form below</p>
<table>
<tr>
<td>German name</td>
<td>
<input type = "text" name = "germanName" />
</td>
</tr>
<tr>
<td colspan = "2">
<input type = "submit"
value = "Remove" />
</td>
</tr>
</table>
</form>
<% // continue scriptlet
} // end if
else {
wordData.removeWord(word);
%> <%-- end scriptlet to insert jsp:forward action --%>
<%-- forward to display word list --%>
<jsp:forward page = "wordListView.jsp" />
<% // continue scriptlet
} // end else
%> <%-- end scriptlet --%>
</body>
</html>
答案 0 :(得分:0)
你的逻辑存在严重问题。
根据
if (word.getGermanName() == null
|| word.getGender() == null
|| word.getEnglishName() == null) {
如果三者中的任何一个值为NULL,则它将显示要添加的表单。如果没有,那么它将使用wordData.addWord(word);
添加词,然后转发到wordListView.jsp
。所以,这适用于添加。
现在,您再次检查null
的所有相同的三个字段,并根据要删除的相同显示形式(即在文本框中)。在你删除按钮的情况下,第一个条件(你想要添加)将是真的,它将显示具有3个输入字段的相同表单。