如何在XPage中提取UIInput的值

时间:2014-05-28 11:27:19

标签: xpages

我有一个操纵合同的Xpages应用程序。一个过程使用字段“conService”中的“合同类型”值来确定接下来必须发生的事情。下面的代码 NOT 会产生任何错误,但第三行似乎没有处理任何结果,事实上甚至似乎都没有处理过程中的任何行。如何提取conService的值?感谢

UIInput uifield = (UIInput) JSFUtil.findComponent("conService");
String serviceName ="";
serviceName = uifield.getValue().toString();

2 个答案:

答案 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/