我可以过滤 Xpages 搜索栏吗

Can I filter an Xpages search bar

我得到了一个我没有开发的 XPages 项目。该项目有一个包含搜索栏 "facet" 的 OneUILayout。是否可以将过滤器编码到搜索栏方面,以便省略具有特定值字段的检索记录。我对 XPages 的经验很少。搜索结果输出到 OneUI_searchpage.xsp,其中编辑框显示搜索字符串,然后动态视图面板显示检索到的记录。我在下面附上了这两项的源代码。谢谢

<xp:label value="Search String:" id="label1"></xp:label>
   <xp:inputText id="inputText1" value="#{param.search}"></xp:inputText>
      <xp:panel id="maincontentpanel">
         <xe:dynamicViewPanel rows="30" id="dynamicViewPanel1"    
            width="100%">
              <xe:this.data>
                 <xp:dominoView viewName="ContractsFlatByYear"  
                    var="view">
                    <xp:this.search><![CDATA[#{javascript:return  
                        param.search;}]]></xp:this.search>
                 </xp:dominoView>
             </xe:this.data>
       </xe:dynamicViewPanel>

在咨询了下面的 stwissel 之后,我修改了应用程序以在搜索结果 xpage 上有一个默认选中的复选框,并为相同的输出创建了一个额外的视图。一种显示已取消合同的视图,一种是省略已取消合同的视图。相关的 Xpage 部分现在如下所示;

<xp:checkBox text="Omit Cancelled Contracts"
  id="OmitCancelled" defaultChecked="true" checkedValue="True"
  uncheckedValue="False" style="padding-left:5.0em" value="# 
    {viewScope.viewSel}">
  <xp:eventHandler event="onchange" submit="true" refreshMode="partial" 
     refreshId="dynamicViewPanel1"></xp:eventHandler>
</xp:checkBox>
<xp:panel id="maincontentpanel">
   <xe:dynamicViewPanel rows="30" id="dynamicViewPanel1"
        width="100%" partialRefresh="true">
     <xe:this.data>
       <xp:dominoView var="view">
         <xp:this.viewName>
           <![CDATA[#{javascript:var cancelledYesNo = viewScope.viewSel 
                = getComponent("OmitCancelled").getValue();
               if(cancelledYesNo == "True"){
                  viewName = "ContractsFlatByYear"}
              else {
                viewName = "ContractsFlatByYearandCancelled"}}]]>
        </xp:this.viewName>
     <xp:this.search><![CDATA[#{javascript:return param.search;}]] 
       ></xp:this.search>
   </xp:dominoView>
 </xe:this.data>
</xe:dynamicViewPanel>

这似乎有效,但我有复选框 onChange 事件以在 dynamicviewpanel 上应用部分刷新,但仅在我单击 dynamicviewpanel 本身时刷新

搜索栏facet只抓取你要搜索的内容,并发送到指定的XPages进行处理。

您有 2 个选择:

  • 更改构面以将附加条件发送到搜索页面
  • 更改搜索页面(查询发布到的页面)中的搜索功能以过滤(如果它是静态的)。

请注意:代码中的过滤不是安全功能(如果您有意这样做的话)。有 reader 和作者字段。

XPages 的核心是 JSF,具有一些围绕 Domino 的特性。你可能想看看我的 article series

更新

根据代码片段,您可以很快得到想要的结果。编辑视图选择公式并添加 & conContractStatus <> "cancelled"。您需要首先检查该视图是否也用于其他地方以显示已取消的合同。如果是这种情况,请复制视图(例如在名称后面添加 Active)并在那里进行更改。

更新 2

您的代码没有 return 值,您不需要访问组件

 <xp:this.viewName>
       <![CDATA[#{javascript:return (viewScope.viewSel=="True") ? "ContractsFlatByYear" : "ContractsFlatByYearandCancelled";}]]>
    </xp:this.viewName>

告诉我们进展如何