JSF h:inputFiIe和f:ajax

时间:2014-01-14 10:02:49

标签: ajax jsf-2

我有点困惑。我试着做一个简单的例子,我们可以从xhtml页面上传文件,在上传文件时会显示something.jpg。 我这样做:

<h:outputScript library="javascript" name="showProgres.js" />
<h:outputScript library="javascript" name="prototype-1.6.0.2.js"/>

<h:form id="form" prependId="false" enctype="multipart/form-data">
<h:panelGrid  columns="2">
<h:inputFile id="upload1" value="#{demoBean.file1}">
<f:ajax onevent="com.corejsf.showProgres" render="@form" />
</h:inputFile>

<h:graphicImage id="pole" library="images" name="orange-barber-pole.gif"
style="display: none"/>


<h:commandButton action="#{demoBean.upload()}" value="upload"></h:commandButton>
</h:panelGrid> 
</h:form>

在资源总监中,我有showprogres.js个文件。使用showProgres函数如下:

if(!com) var com = {};

if(!com.corejsf) {
    com.corejsf = {
        showProgres:    function(data){
        var inputId = data.source.id;
        var progresBarid = inputId.substring(0,
                   inputId.length - "upload2".length) + "pole";
        if(data.status == begin)
                Element.show(progresBarid);
        else if (data.status == success)
            Element.hide(progresBarid);
        }
    }
};

当我在glassfish上开始样品时,结果对我来说意外。像这样的东西(在整个xhtml页面上没有错误):

此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。

<partial-response id="j_id1">
<changes>
<update id="j_id1:javax.faces.ViewState:0">
<![CDATA[ -3528225672520671936:9111168294196781686 ]]>
</update>
</changes>
</partial-response>

有谁知道会发生什么?我没有任何错误。没有ajax,一切都很好(上传工作)。

1 个答案:

答案 0 :(得分:0)

因此,如果您不想动态更新“进度条”,则可以使用onclick处理程序显示图像,如下所示:

<h:form id="uploadForm" enctype="multipart/form-data">
    <h:inputFile id="upload1" value="#{demoBean.file1}" />

    <h:graphicImage id="pole" library="images" name="orange-barber-pole.gif"
         style="display: none"/>

    <h:commandButton action="#{demoBean.upload()}" value="upload"
         onclick="Element.show('uploadForm:pole');" />
</h:form>

不需要ajax功能。我没有尝试过,但我的猜测是,您所看到的行为来自于提交表单时呈现的形式,即如果您有<f:ajax render="pole" />可以让您继续提交。