2011-05-31 112 views
2

我在我的jsf頁面(一個彈出窗口)中有一個表單,用於上傳文件。當文件上傳時,我需要刷新父頁面。什麼是我可以用來完成這項任務的最佳方法。提交調用後的JSF提交按鈕javascript函數

我的JSF頁面很簡單,看起來像這樣

<h:form id="uploadForm" enctype="multipart/form-data"> 
    <ul class="page"> 
     <li> 
      <h:messages layout="list" for="uploadForm" styleClass="generic-message"/> 
     </li> 
     <li> 
      <h:outputLabel for="file" value="select a file" /> 
      <t:inputFileUpload id="file" value="#{aBean.file}" required="true" requiredMessage="File need to be selected"/> 
      <h:message for="file" styleClass="msg" /> 
     </li> 
     <li> 
      <h:outputLabel value="Name" /> 
      <h:inputText id="name" value="#{aBean.name}" label="#{aBean.name}" required="true" requiredMessage="Name is required"/> 
      <h:message for="name" styleClass="msg" /> 
     </li> 
     <li> 
      <h:commandButton value="Upload" action="#{aBean.submit}" /> 
     </li> 
    </ul> 
</h:form> 

任何建議高度讚賞

回答

2

在彈出窗口中,你需要有條件地呈現

<script>window.opener.location.reload(true);</script> 

這樣父窗口將被刷新。

您可以通過在操作方法

private boolean reloadParent; 

public void submit() { 
    // ... 
    reloadParent = true; 
} 

public boolean isReloadParent() { 
    return reloadParent; 
} 

觸發一些布爾和包裝在<ui:fragment>腳本與rendered屬性

<ui:fragment rendered="#{aBean.reloadParent}"> 
    <script>window.opener.location.reload(true);</script> 
</ui:fragment> 
+0

感謝名單balusc了及時的答覆做.. 我加了我的JSF代碼 我把這個代碼塊剛好在 但javascript函數沒有被觸發 有沒有什麼地方錯誤,我已經放置了我的 Sanath 2011-06-01 10:57:04

+0

它需要放置在彈出頁面。 – BalusC 2011-06-01 11:25:25

+0

問題是我的彈出頁面是另一個JSF頁面。 – Sanath 2011-06-01 12:11:47