我在 xpage 中构建了一个搜索功能,用户可以在其中从列表框和组合框中选择值,而 ftsearch 查询由这些值组成。因此,当我更改组合框的值时,会触发 onChange 事件,并对结果视图进行部分更新。问题是视图根据onChange之前组合框的先前值显示结果。就像视图中的结果总是落后一个变化。
我在事件中添加了 try/catch,但没有发生异常。这似乎是一种非常奇怪的行为。有没有人经历过这样的事情?
我会很感激任何想法和方向,因为我现在对问题可能是什么感到困惑。
提前非常感谢!
我只是以一种非常简单的方式试了一下,它对我有用。这是我所拥有的:
使用以下代码为我的 viewPanel 创建一个计算的搜索属性:
requestScope.get("fts");
创建一个组合框(上图)视图面板
在我的情况下,我的视图中有一个测试文档,其主题字段具有“sub 1”、“sub 2”、...、“sub 6”等值。所以我让我的组合为我提供选项“1”...“6”。
如果我想更具体地使用我的 ft 搜索字符串,我可以在 viewPanel 的搜索属性中像这样构建它(步骤 4):
if(requestScope.containsKey("fts") && requestScope.get("fts")!=""){
"Sub " + requestScope.get("fts");
}
就是这样 - 工作。
如果我把你的问题弄错了,请告诉我们。在这种情况下,您需要更具体地说明您正在尝试做什么以及到目前为止您尝试了什么。
编辑:
根据您的评论,我在我的组合中添加了一个列表框。我看到 listBox 本身并没有做任何坏事,但我当然必须注意不要让两者互相干扰。所以这就是我为解决这个问题所做的事情:
(组合变化:)
requestScope.remove("ftsList");
(列表更改:)
requestScope.remove("ftsCombo");
最后将视图的计算搜索属性更改为:
if(requestScope.containsKey("ftsCombo") && requestScope.get("ftsCombo")!=""){
return "Sub " + requestScope.get("ftsCombo");
}
if(requestScope.containsKey("ftsList") && requestScope.get("ftsList")!=""){
return "Sub " + requestScope.get("ftsList");
}
所以现在我可以使用组合或列表来应用过滤器