使用primefaces进行条件检查

时间:2014-05-15 17:46:23

标签: jsf-2 primefaces

我正在使用primefaces来开发应用程序。我有一个p:dataTable,带有使用p:commandLink创建的刷新图标.Below是records.xhtml示例代码:

<f:facet name="header">
    <h:outputText value="SALES Information" />  
    <p:commandLink action="#{showMB.recordList}" update="salesInfo" ajax="true">
        <h:graphicImage library="images" name="show.jpg" title="Show Sales" height="20px;" width="20px;"/>
    </p:commandLink>
</f:facet> 

以下是ManagedBean中的方法:

  public List<RecordDTO> getRecordList() {
        boolean flag=true;
        try {
            if(dataList==null){
                //logic here
                flag=false;
            }
            if(dataList!=null){
                //Logic here
            } 
        } catch (Exception e) {

        }
        return dataList;
    }

现在的问题是,当我点击 p:commandLink 按钮时,如果有条件,控件应该总是第二个。

请建议。 感谢。

1 个答案:

答案 0 :(得分:0)

有一个单独的actionListener,你将显式地将datalist设为null。

  public void actionListener(javax.faces.event.ActionEvent event) {  

      datalist=null;  
  }   

现在你的commandlink应该是

  <p:commandLink action="#{showMB.getRecordList}" 
    actionListener="#{showMB.actionListener}" update="recordsInfo"   
     action="#{showMB.recordList}" ajax="true">  
   <h:graphicImage library="images" name="show.jpg" title="Refresh"/>  
 </p:commandLink>  

在操作之前首先执行ActionListener所以在操作方法执行之前将datalist设置为null。

但理想情况下,只有在后端引发需要事件源组件实例时才必须使用actionListener。

希望这有帮助。