我需要创建一个带有JSF 2.0(不是复合组件)的自定义组件,该组件与SelectManyCheckbox类似,但具有不同的UI。我尝试通过继承UISelectMany并创建一个新的自定义Renderer来实现此目的。继承UISelectMany以创建自定义JSF组件
我不明白的是,客户端上的输入数据如何通过组件传递到Bean中。必须有一种方法可以从POST中收集http params,将它放入List中并将List设置在Bean中。
编辑
我已经尝试过与此类似:
public void decode(FacesContext context, UIComponent component) {
if ((context == null) || (component == null)) {
throw new NullPointerException();
}
MapComponent map = (MapComponent) component;
String key = getName(context, map);
String value = (String)context.getExternalContext().
getRequestParameterMap().get(key);
if (value != null)
map.setCurrent(value);
}
}
我可以在调试器中看到的,我的HTTP-PARAMS正确获取。我也可以看到,我的自定义转换器将在此之后被调用。但是价值观并没有达到比恩。但是我可以在日志中看到一个非特定的验证错误。 在网上阅读了一些教程后,我仍然不明白这是如何工作的。必须有一些胶水代码,它将转换后的值传递给Bean中的setter。有人知道这是如何工作的吗?
感谢 月
感谢您的提示!我认为验证可能是问题。我实现了一个decode()和getConvertedValue(),我可以在调试模式中看到它们被调用。但在此之后,我在日志中看到验证错误。我没有发现为什么会出现此错误...或验证是如何工作的...... – treeno 2012-01-06 20:32:43
验证错误的消息是什么?臭名昭着的“价值无效”? – BalusC 2012-01-06 20:35:42
是的,确切地说......我正在做一些很好的认识错误? ;-)也许UISelectMany检查是否所有选定的值都是从中选择值的完整值列表的一部分。但目前我只有选定的值。我无法在jsf源文件中看到发生这种情况的原因。 – treeno 2012-01-07 20:57:27