html - Dialog content does not get updated -


i have searched hours, , i've found stackoverflow questions related it, not find solution. have primefaces dialog displays content of log file. dialog shown when pressing button. problem once dialog displayed, content never updated. is, #{pvtrunner.pvtlog} method never called. how can make dialog call method every time displayed, not first time?

<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> 

this java method should update dialog content:

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; } 

thanks

first things first, stop doing business logic in getter. should returning property. below 1 approach use. make sure check link.

modify getpvtlog()

public string getpvtlog() {     return result; } 

then define method used actionlistener in <p:commandbutton>to update result. example:

public void click() {         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; } 

change method name see fit. quick example.

now remove type="button" , instead of onclick change oncomplete. onclick executed before ajax request, want <p:dialog> pop after ajax request. believe main issue way. add actionlistener in <p:commandbutton>.

<p:commandbutton id="showlog" actionlistener="#{pvtrunner.click()}" value="show log" oncomplete="dlg.show()" update=":logdialogcontnet"/> 

sample

<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" actionlistener="#{pvtrunner.click()}" value="show log" oncomplete="dlg.show()" update=":logdialogcontnet"/>     </p:panelgrid> </h:form> 

Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -