2

Java with JSP アプリケーションで使用している次のクラスがあります。

// public class QuestionBO は Serializable を実装します{

private int questionId;
private int testID;
private String question;

private TutorBO infoAboutTutor;
private SubjectBO infoAboutSubject;
private TestBO infoAboutTest;
private List<AnswerBO> answers;

public QuestionBO() {
}

public QuestionBO(String question) {
    this.question = question;
}

ゲッター&セッター……

JSP ページには、各質問 (その文字列表現) の横にチェックボックスがあるフォームがあります。ユーザーはいくつかの質問にマークを付け、フォームをサーバーに送信してサーブレットで処理します。

どの質問が選択されているかを確認できるように、質問オブジェクトをチェックボックスにバインドする従来の方法は何ですか?

現在、フォームを構築するために次のアプローチを使用しています。

///

    <c:if test="${not empty questionsForSubject}">
    <form  action="/TutorWebApp/controller" method="POST" name="addQuestionForm">
        <input type="hidden" name="command" value="add_question_list" />
        <input type="hidden" name="testName" value="${testName}"/>            
        <table border ="1">
            <tbody>
                <c:forEach items="${questionsForSubject}" var="question">
                    <tr>
                        <td>
                            <input type="checkbox" name ="choosen_question" 
                                   value="${question.getQuestion()}">
                            ${question.getQuestion()}
                            <br />
                        </td>
                    </tr>
                </c:forEach>
            </tbody>
        </table>
        <input type="submit" value="Add questions "/>              
    </form> 

また、フレームワークを使用するべきではありません。

ありがとう

そして最後の質問があります

    <c:if test="${not empty questionsForSubject}">
    <form  action="/TutorWebApp/controller" method="POST" name="addQuestionForm">
        <input type="hidden" name="command" value="add_question_list" />
        <input type="hidden" name="testName" value="${testName}"/> 
        <input type="hidden" name="questionsForSubject" value="${questionsForSubject}"/>
        <table border ="1">
            <tbody>
                <c:forEach items="${questionsForSubject.keySet()}" var="questionID">
                    <tr>
                        <td>
                            <input type="checkbox" name ="choosen_question" value="${questionID}">
                            ${questionsForSubject.get(questionID).getQuestion()}
                            <br />
                        </td>
                    </tr>
                </c:forEach>
            </tbody>
        </table>
        <input type="submit" value="Добавить вопросы"/>              
    </form> 

サーブレットでこのページからマップを取得するにはどうすればよいですか?

4

2 に答える 2

2

各チェックボックスに一意の値を与えます。たとえば、一意の質問識別子:

<c:forEach items="${questionsForSubject}" var="question">
    <tr>
        <td>
            <input type="checkbox" name="chosen_question" value="${question.questionId}" />
            ${question.question}
            <br />
        </td>
    </tr>
</c:forEach>

このようにして、サーブレットで次の呼び出しを行うだけで、チェックされたすべての値を取得できます。

String[] chosenQuestions = request.getParameterValues("chosen_question");
于 2012-05-01T13:30:14.077 に答える
0

次のように、それぞれに一意の名前を生成checkboxします。

<input type="checkbox" name="${question.questionId}" />

また:

<input type="checkbox" name="choosen_question_${question.questionId}" />

checkboxその後、サーブレットでそれぞれを識別できます

于 2012-05-01T11:19:24.867 に答える