提交调用javascript函数后,JSF提交按钮

时间:2011-05-31 12:26:39

标签: java javascript jquery jsf jsf-2

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

任何建议都受到高度赞赏

1 个答案:

答案 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}}