- PR -

【JSF】 javascript.escape()したリクエストパラメータを読み込みencodeしたい

1
投稿者投稿内容
小梅
会議室デビュー日: 2005/04/04
投稿数: 10
投稿日時: 2007-07-12 23:57
どなたかご教授ください。

ある画面遷移を行う際、
javascriptのescape()関数にてデコードした文字列を
リクエストパラメータとして渡し、
遷移後の画面ロード時にJSFで読み込み、
エンコードした文字列を表示したいです。

お助けください。

朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-07-13 07:25
javascriptで分解したものはjavascriptで
よしだひろゆき
大ベテラン
会議室デビュー日: 2004/11/22
投稿数: 141
投稿日時: 2007-07-16 14:29
引用:

ある画面遷移を行う際、
javascriptのescape()関数にてデコードした文字列を
リクエストパラメータとして渡し、
遷移後の画面ロード時にJSFで読み込み、
エンコードした文字列を表示したいです。


ええと、何が分からないのでしょうか??
小梅
会議室デビュー日: 2005/04/04
投稿数: 10
投稿日時: 2007-07-16 15:53
杏さん

ご指摘ありがとうございます。

まず、杏さんのご指摘はごもっともですので、取り急ぎjavascriptで対応してみました。


よしだひろゆきさん

今後、デコード/エンコード処理などを行う際の知識として知っておきたいので、教えてください。

1.JSFにて画面遷移する際、リクエストパラメータを渡したいのですが、
  その際のパラメータをデコードする方法(デコードの種類も)

2.上記1にて渡されたパラメータを
  「FacesContext.getExternalContext().getRequestParameterMap();」
  などで受け取り、エンコードする方法。

※jakarta.apache.org/commons/codec/ なども参考にしましたが、
 それ以外の方法など教えてください。

よろしくお願いします。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-07-16 17:19
JavaScript は ブラウザ別に挙動が多少ちがいます。
JavaScript による encodingを実装しても
「ブラウザの種類xバージョン数x文字コード数」文のdecodeをしなければいけません。
JavaScriptの escape() / unescape() のソースと同様の記述のものを
Javaで作成するしかありませんが。

セキュア上の観点からそのまま流すのはまずいならば
HTTPS通信をしましょう。

Javaにいたっては自動decodeをされることをわすれなく。
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2007-07-17 11:13
escape/unescpaseやブラウザの種類やバージョンによって仕様がまちまちなので、
encodeURIComponent/decodeURIComponent関数を使用してください。

java側はjava.netncoder#encode/java.net.URLDecoder#decodeが対応します。
(GET,POSTのパラメータは自動的にデコードされますが)

javaとjsの間で半角スペースの扱いが異なるのでその辺は注意。

コード:
js:   encode " "   => "%20"
      decode "%20" => " ", "+" => "+"
java: encode " "   => "+" 
      decode "%20" => " ", "+" => " "

# js => java は問題なし。
# java => js は "+"を"%20"にしてやる必要あり。

小梅
会議室デビュー日: 2005/04/04
投稿数: 10
投稿日時: 2007-07-19 11:05
杏さん、sawatさん

とても参考になりました。

ありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)