Мой сценарий следующий: у меня есть primefaces p:treeTable
, который содержит файлы журналов для загрузки. Если мой выбранный узел не нулевой, нет проблем, файл будет загружен, а дерево останется расширенным, чтобы я мог загружать другие файлы с того же узла, но если выбранный узел нулевой или есть какой-то Exception
, мне понравится чтобы отобразить сообщение без сворачивания всех узлов, которые пользователь уже расширил. Это поведение, которого я хочу избежать, поскольку все дерево рушится.
Я ищу решение и пытаюсь реализовать некоторые из представленных в этом ссылка но у меня никто не работает.
Вот мой 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
получаю файл, я отображаю сообщение, а затем дерево сворачивается.
Может ли кто-нибудь сказать мне, как я могу избежать этого поведения?
Заранее спасибо!!
<p:ajax event="expand" listener="#{ManagedBean.expand}" update=":tree" />
- person Yagami Light   schedule 27.07.2016update=":tree"
к событию ajax? попробую - person CarlosLeo   schedule 27.07.2016