我有一个操纵合同的Xpages应用程序。一个过程使用字段“conService”中的“合同类型”值来确定接下来必须发生的事情。下面的代码 NOT 会产生任何错误,但第三行似乎没有处理任何结果,事实上甚至似乎都没有处理过程中的任何行。如何提取conService的值?感谢
UIInput uifield = (UIInput) JSFUtil.findComponent("conService");
String serviceName ="";
serviceName = uifield.getValue().toString();
答案 0 :(得分:3)
你快到了......
获得UIInput对象后,您可以执行.getSubmittedValue()或.getValue() - 具体取决于您在JSF生命周期中的位置。然后你只需要将它转换为String - 而不是使用toString()。
所以应该这样做:
UIInput uifield = (UIInput) JSFUtil.findComponent("conService");
String serviceName = (String)uifield.getValue();
为了避免考虑使用getSubmittedValue或getValue,我在代码中使用了一个小实用程序方法:
ublic static Object getSubmittedValue(UIComponent c) {
// value submitted from the browser
Object o = null;
if (null != c) {
o = ((UIInput) c).getSubmittedValue();
if (null == o) {
// else not yet submitted
o = ((UIInput) c).getValue();
}
}
return o;
}
这只会让生活变得不那么复杂; - )
/约翰
答案 1 :(得分:2)
如果可能的话,值得直接转到您存储价值的数据源。它更有效,更易于管理。
如果在过程验证阶段确实需要该值,对于转换器或验证器,您可以使用组件绑定轻松访问相关组件,此时您可以使用getSubmittedValue() - 因为该值不会被设置然而。这是来自Tim Tripcony的NotesIn9,涵盖http://notesin9.com/index.php/2014/05/22/notesin9-143-component-vs-value-binding-in-xpages/。