我在jsf页面(弹出窗口)中有一个用于上传文件的表单。我需要在上传文件时刷新父页面。我可以用来实现这项任务的最佳方法是什么。
我的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>
任何建议都受到高度赞赏
答案 0 :(得分: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>
中
{{1}}