0
<input type="text" name="designation" value=<%=request.getParameter("designation")%> ></input>

この JSP では、window.location.replace() 関数を使用して、javascript 経由で別の JSP ページからリクエスト パラメータを送信しました。

このjspページのリクエストパラメータをテキストボックスに表示したいと思います。

ただし、最初の空白までの文字列の一部のみを表示しています。残りの文字列はトリミングされます。

この問題の原因は何ですか?

たとえば、designation="software Engineer" の場合、テキスト ボックスには "software" のみが表示され、" "(スペース) と "engineer" は表示されません。

4

1 に答える 1

5

属性値を引用符で囲む必要があります。

<input type="text" name="designation" value="<%=request.getParameter("designation")%>">

それ以外の場合、スペースは HTML 要素属性の区切り記号として解釈され、次の単語が別の HTML 要素属性になります。


具体的な問題とは関係ありませんが、JSP 全体でこのアプローチを使用し、DB からのユーザー制御データの再表示にも使用すると、XSS 攻撃の穴ができます。それらを適切に HTML エスケープしていることを確認してください。JSP/サーブレット Web アプリケーションでの XSS 防止も参照してください。

于 2012-05-02T21:50:05.920 に答える