p:如果所选节点为空且显示消息,则treeTable将折叠

时间:2016-07-27 10:26:40

标签: primefaces treetable

我的方案如下:我有一个primefaces p:treeTable,其中包含要下载的日志文件。如果我选择的节点不为空,则没有问题,文件将被下载,树将保持扩展,以便我可以从同一节点下载其他文件,但如果所选节点为空或有一些Exception ,我想显示一条消息而不会崩溃用户已经扩展的所有节点。这就是我想要避免的行为,因为所有树都崩溃了。

我正在寻找一个解决方案,并尝试实现this link中暴露的一些解决方案,但没有人适合我。

这是我的 xhtml

<p:outputPanel id="log">                
    <div style="height:35px;">
        <p:commandButton id="btnDownload" value="Download" 
            actionListener="#{loggerView.download}" ajax="false" icon="ui-icon-arrowthick-1-s" 
            styleClass="ui-priority-primary">
            <p:fileDownload value="#{loggerView.file}" />
        </p:commandButton>
    </div>
    <p:treeTable id="tableLogs" 
            value="#{loggerView.tree}" 
            var="log" 
            style="width:100%;"
            selectionMode="single" 
            selection="#{loggerView.selectedLog}" >

        <f:facet name="header">
            Logs
        </f:facet>
        <p:column headerText="Log name" style="width:40%">
            <h:outputText value="#{log.nombre}" />
        </p:column>
        <p:column headerText="Last modification date" style="width:30%">
            <h:outputText value="#{log.date}" />
        </p:column>
        <p:column headerText="Log size" style="width:27%">
            <h:outputText value="#{log.kilobytes}" />
        </p:column>

    </p:treeTable>
</p:outputPanel>

我的 View

@ManagedBean(name = "loggerView")
@ViewScoped
public class LoggerView implements Serializable {

    private DefaultTreeNode selectedLog;

    // OTHER VARIABLES, METHODS, GETTERS AND SETTERS...

    public void download() {

        if (selectedLog != null) {

            try {

                // HERE I GET MY LOG TO DOWNLOAD AND IT'S WORKING JUST FINE

            } catch (Exception e) {         
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", "Getting the file!"));                            
            }       

        } else {        
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "WARNING", "The log is null!"));        
        }

    }

}   

正如您所看到的,如果我的selectedLog为空,或者我catch Exception获取文件,我会显示一条消息,然后是树崩溃的时候。

任何人都可以告诉我如何避免这种行为?

提前致谢!!

0 个答案:

没有答案