2011-05-31 72 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