这是我的问题:我需要为报告创建一个(看似)简单的前端。用户输入一堆数字,用空格或逗号分隔,它们是报告中将显示的 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”的方法是什么?
谢谢,扎克