0
// jsp snippet
<button name="TesterButton" value="TesterButton" onClick="location.href='TesterServlet';">

TesterServletクラスのサーブレットスニペット

writer.println( (String)request.getParameter("TesterButton") ); // always returns null

上記のサーブレットは常にnullを返します。なぜnullを返すのですか?

4

3 に答える 3

3

コードに指示したとおりに機能します。ウィンドウの場所を指定されたURLに変更します。だから、驚きはありません。

実際に必要なものは、次のようにコーディングする必要があります。

<form action="TesterServlet">
    <input type="submit" name="TesterButton" value="TesterButton" />
</form>

または、何らかの理由でこれにJSを使用することを本当に主張する場合:

<button name="TesterButton" value="TesterButton" onclick="location.href='TesterServlet?TesterButton=TesterButton';">

onClickの代わりにの使用は、onclick古いまたは貧弱なHTMLリソース/例を読んでいる可能性があることを示していることに注意してください。

参照:

于 2012-05-02T04:16:38.543 に答える
1

フォーム内にある場合でも、ボタンはリクエストで送信されません。

アップデート:

クリックされたボタンの値を送信する場合(ちょっと奇妙な)、サーブレットを呼び出す前に、非表示の要素を使用して値を設定する必要があります。

<form id="myForm" method="post">
    <input type="hidden" id="hidButtonValue" />
    <button id="TesterButton" value="TesterButton" onclick="document.getElementById('hidButtonValue').value=this.value; location.href='TesterServlet';"
</form>

これで、サーブレットに隠されたものを呼び出すことができます

writer.println( (String)request.getParameter("hidButtonValue") );

onclickまた、 JavaScript関数にコードをカプセル化することをお勧めします。

于 2012-05-02T04:08:23.737 に答える
0

すばやく簡単な方法は、非表示のフィールドを持つフォームを使用することです。

<form action="TesterServlet">
    <input type="hidden" name="testField" id="test" value="SomeValue" />
    <input type="submit" value="Submit" />
</form>

次に、サーブレットで:

writer.println( (String)request.getParameter("testField") ); // Should return "SomeValue"
于 2012-05-02T04:21:11.960 に答える