我正在使用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 按钮时,如果有条件,控件应该总是第二个。
请建议。 感谢。
答案 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。
希望这有帮助。