3

HTML ページにテキストエリアを含むフォームがあり、その内容を POST 経由でサーブレットに送信しようとしています。問題は、テキストエリアに次のように記述した場合、サーブレット ( HttpServlet を拡張する) の service() メソッドで( requestHttpServletRequestオブジェクト)unenclosed <enclosed>呼び出すと、パラメーター値として "unenclosed" しか得られないことです。テキストエリアの完全な内容を取得する方法はありますか?request.getParameter("textareaId")

HTML コード:

<form action="MyServlet" method="post">
    <textarea name="MyTextarea" rows="5" cols="50"></textarea>
</form>

サーブレット コード:

public class MyServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String contents = request.getParameter("MyTextarea");
        System.out.println(contents);
    }
}

ありがとう!

EDIT:サーブレットに送信する前に、JavaScript関数でテキストエリアの内容をエスケープすることで解決しました。

4

2 に答える 2

1

これindex.jspは、Tomcat 6.0.35 で動作します。が表示され<>コンソールに出力されます。

<%
    String contents = request.getParameter("MyTextarea");
    System.out.println(contents);
%>
<form method="post">
    <textarea name="MyTextarea" rows="5" cols="50"></textarea>
    <input type=submit>
</form>

どのサーブレットコンテナを使用していますか?

コンテナーには、デフォルトでオンになっているパラメーター エスケープがありますか?

<デフォルトの文字エンコーディングは何>ですか?

于 2013-04-22T15:16:22.447 に答える
0

内部ではand<textarea name="MyTextarea">...</textarea>を使用する必要があります。これは、apache common のEscapeUtils.escapeHTML (と思います) で実行できます。これは forまたは in :にも当てはまります。&lt;&gt;<input value="..."><a href="... .jsp?a=1&amp;b=2">&amp; &lt; &gt; &quot; &apos;

于 2013-04-22T14:42:32.060 に答える