【发布时间】:2013-07-16 00:21:57
【问题描述】:
我已经搜索了几个小时,我发现了一些与之相关的 stackoverflow 问题,但找不到解决方案。我有一个显示日志文件内容的 primefaces 对话框。按下按钮时会显示对话框。我的问题是,一旦显示对话框,内容就永远不会更新。也就是说,永远不会调用 #{pvtRunner.pvtLog} 方法。如何让我的对话框在每次显示时都调用此方法,而不仅仅是第一次?
<h:head>
</h:head>
<h:body>
<p:dialog id="logDialog" header="PVT Log" widgetVar="dlg" height="400" width="600" dynamic="true">
<h:outputText id="logDialogContnet" value="#{pvtRunner.pvtLog}" escape="false"/>
</p:dialog>
<h:form>
<p:panelGrid id="mainPanelGrid" columns="1" styleClass="panelGridBorder panelGridCenter">
....
<p:commandButton id="showLog" value="Show Log" onclick="dlg.show()" type="button" update=":logDialogContnet"/>
</p:panelGrid>
</h:form>
</h:body>
这是应该更新对话框内容的 java 方法:
public String getPvtLog() {
String result = "";
try {
File logFile = new File(instanceRoot + "\\config\\ProcessVerification.log");
InputStream fis = new FileInputStream(logFile);
result = readStream(fis);
} catch (IOException e) {
log.severe(e.getMessage());
}
return result;
}
谢谢
【问题讨论】:
-
你能发布你正在调用的方法的代码
pvtRunner.pvtLog吗?您确定值发生了变化并且没有更新,还是值没有变化并且有更新? -
我正在调试 - 我只在第一次调用时遇到了断点。
-
如果该对话框能够在请求生命周期内向服务器发送任何请求,则该对话框需要位于
<h:form/>内。还将您在getPvtLog中正在进行的处理移动到其他地方,可能是<p:commandButton/>的onclick。否则,您将自己设置为代码中的一些长期错误
标签: html ajax jsf primefaces