2014-01-14 54 views
0

我有点困惑。我尝试做一个简单的例子,我们可以从xhtml页面上传文件,并在上传文件时显示something.jpg。 而我这样做:JSF h:inputFiIe和f:ajax

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

而且在资源directorium我有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的每一个都很好(上传作品)。

+0

我很困惑:你会对''知道你的事件吗? “onevent”的参数应该是由''组件实际触发的事件名称。也许你打算把它附加到'commandButton'上? – mabi

+0

好吧,当我把它放在那里,我有同样的结果!你的意思是说我有渲染问题吗?也许没有正确的定义组件Id特别是如果我把coaxButton组件中的Ajax? – vmaric

回答

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" />应该让你继续提交。

+0

它是动画jpg图像。想法是,动画工作了一段时间,直到文件完成! – vmaric

+0

@vmaric那应该有效,那么 – mabi

+0

怎么洗澡? :-)我可以住这个脚本,并用制作可见的jpg iamge。 – vmaric