0

私はいくつかの素晴らしい解決策を探しています。私のページにはいくつかのテキストフィールドがあり、jQuery serialize メソッドを使用して Ajax 経由でこれらを送信しています。このシリアル化された文字列は、キー = 'nameOfTextfield' nad 値 = 'valueInTextfield' でハッシュマップに私の Java メソッドで解析されます

たとえば、私はこの String stdSel=value1&stdNamText=value2&stdRevText=value3を取得しましたが、すべて正常に動作します。

String[] sForm = serializedForm.split("&");
Map<String, String> fForm = new HashMap<String, String>();
for (String part : sForm) {
  String key = null;
  String value = null;
  try {
    key = part.split("=")[0];
    value = part.split("=",2)[1];
    fForm.put(key, value);
  //if textfield is empty
  } catch(IndexOutOfBoundsException e) {
    fForm.put(key, "");
  }
}

ただし、このメソッドは、一部のテキストフィールドにアンパサンドが表示されると失敗します。たとえば、このstdSel=value1&stdNamText=value2&stdRevText=val&&ue3です。私の考えでは、シリアライズされた文字列のセパレーターとしてアンパサンドを他の文字またはそれ以上の文字に置き換えることを考えていました。それは可能で良い考えですか、それとももっと良い方法はありますか?

よろしくオンドレイ

4

1 に答える 1

0

アンパサンドserialize 関数によってエスケープされるため、URL が壊れることはありません。

URLから取得したフィールドをエスケープ解除するために必要なのは

value = URLDecoder.decode(value,"UTF-8");

しかし、指摘されたように... Pointy、Web フレームワークを使用していて、vanilla java.net Java だけを使用していない場合は、おそらくこれを行う必要はありません。

于 2012-09-20T15:56:28.333 に答える