我可以过滤Xpages搜索栏吗

我可以过滤Xpages搜索栏吗,xpages,Xpages,我得到了一个我没有开发的XPages项目。该项目有一个OneUILayout,其中包含一个搜索栏“facet”。是否可以将过滤器编码到搜索栏方面,以便忽略具有特定值字段的检索记录。我对XPages几乎没有经验。搜索结果被输出到OneUI_searchpage.xsp,其中一个编辑框显示搜索字符串,然后一个动态视图面板显示检索到的记录。我在下面附上了这两个项目的源代码。多谢各位 <xp:label value="Search String:" id="label1"></xp:l

我得到了一个我没有开发的XPages项目。该项目有一个OneUILayout,其中包含一个搜索栏“facet”。是否可以将过滤器编码到搜索栏方面,以便忽略具有特定值字段的检索记录。我对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 event在dynamicviewpanel上应用部分刷新,但只有在我单击dynamicviewpanel本身时才会刷新。搜索栏方面仅捕获您要搜索的内容,并将其发送到指定的XPages进行处理

您有两种选择:

  • 更改facet以将附加条件发送到搜索页面
  • 更改搜索页面(查询发布到的页面)中的搜索函数以过滤该页面(如果是静态的)
请注意:代码中的过滤不是一种安全功能(如果您有意的话)。其中有reader和author字段

XPages的核心是JSF,它具有一些围绕Domino的特性。你可能想看看我对他们的看法

更新

基于代码片段,您可以非常快速地获得所需的结果。编辑视图选择公式并添加
&合同状态“已取消”
。您需要首先检查该视图是否也用于显示已取消的合同。如果是这种情况,复制视图(例如在名称后面添加活动视图)并在那里进行更改

更新2

代码不返回值,也不需要访问组件

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


让我们知道进展如何

非常感谢您的回复。所以“方面”不能被改变,对吗?我会看看你的两个选择,看看我能做些什么。基本上,这些记录是带有conContractStatus字段的合同,我想省略conContractStatus=cancelled的记录。您可以更改方面的内容。但你的情况实际上可能要简单得多。检查执行搜索的代码:在后一种情况下可以是db.ftsearch或view.ftsearch,只需更改视图选择公式,在前一种情况下切换到视图搜索即可。顺便说一句,若你们发布了一个代码示例,那个么答案就并没有那个么多猜测了,我已经为搜索输出页面添加了一些源代码。仍然查找可能比您预期的更快修复我假设这与javascript有关:return param.search部分。