Вот моя проблема: мне нужно создать (казалось бы) простой интерфейс для отчета.Пользователь вводит группу чисел, разделенных пробелами или запятыми, которые представляют собой идентификаторы, которые будут отображаться в отчете.
Я использую конвертер, чтобы преобразовать его из строки в список, а затем обратно в форму, где числа разделяются запятой:
@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»?
Спасибо, Зак