如何在XPages中提取UIInput的值

如何在XPages中提取UIInput的值,xpages,Xpages,我有一个处理合同的Xpages应用程序。一个过程使用字段“conService”中的合同类型值来确定接下来必须发生什么。下面的代码不会产生任何错误,但第三行似乎不会处理任何结果,事实上,第三行之后的过程中似乎也不会处理任何行。如何提取保护区的价值?谢谢 UIInput uifield = (UIInput) JSFUtil.findComponent("conService"); String serviceName =""; serviceName = uifield.getValue().t

我有一个处理合同的Xpages应用程序。一个过程使用字段“conService”中的合同类型值来确定接下来必须发生什么。下面的代码不会产生任何错误,但第三行似乎不会处理任何结果,事实上,第三行之后的过程中似乎也不会处理任何行。如何提取保护区的价值?谢谢

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

你快到了

一旦拥有UIInput对象,就可以执行.getSubmittedValue()或.getValue()——这取决于您在JSF生命周期中的位置。然后只需要将其转换为字符串,而不是使用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;
}
这只会让生活变得不那么复杂;-)


/John

如果可能,直接访问存储值的数据源是值得的。它更高效,更容易管理


如果在流程验证阶段确实需要该值,对于转换器或验证器,可以使用组件绑定轻松访问相关组件,此时可以使用getSubmittedValue()-因为尚未设置该值。这是Tim Tripcony写的一条说明。

您确认uifield指向该对象了吗?如果您选择sysout uifield.toString(),它是否返回null或指向对象的指针?或者,您可以系统输出任何返回字符串的属性,这样您就知道您的第一行正在工作。Steve-谢谢大家,到目前为止,在这方面都很有帮助。我按照你说的做了,系统输出令人惊讶,因为它不是空的,但也不是我所认为的输出。这个输出是指向对象的指针吗?如果是这样,我就必须进行更多的操作?UIFIELD输出:com.ibm.xsp.component.xp。XspSelectOneMenu@43474347You得到了我所期望的。这主要是告诉我,你在第一行工作了,你得到了一个对象的引用。看起来你在下面得到了一些很好的答案。谢谢约翰。到目前为止,这已经起到了帮助作用,现在我已经检索到了“a”值,但似乎状态为“null”,然而,正如我在上面回复Steve的UIInput uifield=(UIInput)JSFUtil.findComponent(“conService”)的输出;System.out.println(“UIFIELD输出:+UIFIELD.toString());是UIFIELD输出:com.ibm.xsp.component.xp。XspSelectOneMenu@43474347-可能是指向对象的指针。注意:我没有创建这个应用程序,它太复杂了。啊。。。。。从您编写的内容来看,该字段不是输入字段。。。。我向您展示的代码适用于输入字段(我在验证器中经常使用它来在验证期间从其他组件获取值)。您可能需要显示您的标记,并告诉我们Java代码的调用位置?。。。忘了提及-如果您在JSF阶段4之后引用组件,那么您应该直接与模型“对话”(这是我通常使用bean的地方,可以通过bean上的setter/getter直接与值对话。我有一个简单的演示数据库,其中展示了一些在验证程序中的使用(以及其他内容)-您可以从以下位置获取信息:。此应用程序中存在一些问题。目前正在重新预加载-但它可以显示验证程序中组件绑定的使用情况(感谢Tim Tripcony的组件绑定视频#codefortim)