2つのjsp-pageがあります。最初のjspページでは、件名を選択するコンボボックス、アクション用のいくつかのラジオボタンを使用します。このページのサーブレットでは、が表示されますrequest.getParameter("subjectID")
。
サーブレットとjspを表示するとより良い
<form action="/TutorWebApp/controller" method="POST" name="editTestForm">
<p>
Choose subject
<select name='subject'>
<c:forEach items="${subjects}" var="subject" >
<option value="${subject.key}">
${subject.value.getName()}
</option>
</c:forEach>
</select>
</p>
<input type="radio" name="command" value="add_test">
Add test <br />
<input type="radio" name="command" value="add_subject">
Add subject <br />
<input type="submit" value="OK"/>
</form>
このページでは、コンボボックスから件名を選択します。そして、「テストの追加」を選択します。サーブレットに行った後
class AddTestCommand implements Command {
private static final String PARAM_TEST_NAME = "testName";
private static final String PARAM_SUBJECT = "subject";
@Override
public String execute(HttpServletRequest request) throws ServletException, IOException {
String page = " ";
String message = " ";
String testName = request.getParameter(PARAM_TEST_NAME);
if (testName != null && (!"".equals(testName))) {
HttpSession session = request.getSession(true);
Integer userID = (Integer) session.getAttribute("userID");
Integer subjectId =
Integer.valueOf(request.getParameter(PARAM_SUBJECT));
if(AddTestLogic.addTest(userID, subjectId, testName)){
message = "Success";
} else{
message = "This test already exist";
}
request.setAttribute("result", message);
}
page = ResourceBuilder.getPropertyManager(PropertyEnum.JSP_PAGE).
getProperty("path.page.addtest");
return page;
}
}
request.getParameter("subject");
ここで、if(){}の前にtestNameに近いサブジェクトの値を取得できます。次のステップ-次のjspに進みます
<form action="/TutorWebApp/controller" method="POST" name="addTestForm">
<input type="hidden" name="command" value="add_test" />
Name of new test:
<input type="text" name="testName" value=""/>
<input type="submit" value="Add test"/>
</form>
jspにデータを入力した後、同じサーブレットに再度移動します。しかし、私は値request.getParameter( "subject")を失います。
HttpSessionを使おうとしていますが、最初のページでMapを送信します。そして、MapからsubjectIDを選択するだけでリクエストを取得できます。
この問題をどのように解決するかわかりません。ありがとう