複数送信したパラメータを一度に受け取りたい

HTMLのhiddenタグのvalueの値をJsonを用いて、サーバーサイドに送り、それを受信するという処理を行う際に、org.apache.turbine.util.RunData.javaとorg.apache.velocity.tools.generic.ValueParser.javaは非常に役に立つ。

以下はRunDataクラスのgetParametersメソッドについて

getParameters

org.apache.fulcrum.parser.ParameterParser getParameters()

Gets the parameters.

Returns:

a parameter parser.

以下はValueParserクラスのgetStringsメソッドについて

getStrings

public java.lang.String[] getStrings(java.lang.String key)

Parameters:

key – the key for the desired parameter

Returns:

an array of String objects containing all of the values associated with the given key, or null if the no values are associated with the given key

例えばinputタグでname=”hoge”のvalueを一度にたくさん送信し、サーバーサイドで一斉に受信する場合は以下のようになる。

HTML文

<input name="hoge" type="hidden" value="hogehoge1">
<input name="hoge" type="hidden" value="hogehoge2">
<input name="hoge" type="hidden" value="hogehoge3">

import org.apache.turbine.util.RunData;

public String[] getHoge(RunData rundata) { 
String hogeList[] = rundata.getParameters().getStrings("hoge");

return hogeList;
}

これで複数飛ばした値を配列に格納して、得ることができる。

ただ一つ問題があり、この方法だと日本語は文字化けを起こしてしまう。

正しい文字コードに変換して、文字化けを直す方法は、こちらに記載した。