ここに私の問題があります: レポート用の (一見) シンプルなフロントエンドを作成する必要があります。ユーザーは、レポートに表示される ID である、空白またはコンマで区切られた一連の数字を入力します。
コンバーターを使用してこれを文字列からリストに変更し、そこから数値がコンマで区切られた形式に戻します。
@FacesConverter(value="multiProdConverter")
public class MultiProdConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
StringTokenizer splitter = new StringTokenizer(value, " \t\n\r\f,");
List<Integer> ret = new ArrayList<Integer>();
while (splitter.hasMoreTokens()) {
String token = splitter.nextToken();
ret.add(Integer.parseInt(token));
}
return ret;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return implode((List<Integer>)value);
}
private String implode(List<Integer> sdaList) {
StringBuilder sb = new StringBuilder();
if (!sdaList.isEmpty()) {
sb.append(sdaList.get(0));
for (int i = 1; i < sdaList.size(); i++) {
sb.append(",");
sb.append(sdaList.get(i));
}
}
return sb.toString();
}
}
しかし、このフォーマットされたバージョンの数値を外部ページのリクエスト パラメータに実際に取得する最善の方法は何でしょうか?
ユーザーが数字を入力した後に送信を押すだけで、ページがこのレポートに移動します。これは JavaScript だけを使用すると非常に簡単ですが、これを行う「JSF」の方法は何ですか?
ありがとう、ザック