2013-02-04 51 views
0

我有很多fileleaseload和對話從primefaces的問題。從Primefaces oncomplete不起作用fileUpload和對話框

我有一個按鈕,當它被點擊時調用對話框。在這個對話框中我有一個fileUpload。當我選擇某個文件並更新表單上的圖像時,我希望此對話框關閉。 下面是代碼:

<h:form id="formCadastroSistema"> 
    <div id="divCadastroComponenteConstrutivo"> 
    <h:outputText value="Cadastro de Componente Construtivo" style="font-size: 20px; color: black;"/> 
    <p:layout style="height:240px; width: 100%; margin-top: 20px; padding-left: 40px;"> 
     <p:layoutUnit position="west" size="330" style="border: none;" resizable="false" > 
     <p:graphicImage value="#{novoComponenteConstutivo.mostrarImagemDeByte()}" id="foto"/> 
     <p:commandButton onclick="dialogUpLoad.show();" value="abrir"/> 
     </p:layoutUnit> 
     <p:layoutUnit position="center" style="font-size: 14px; border: none;"> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <h:outputText value="Nome: "/> 
      <p:inputText style="width: 295px;" value="#{novoComponenteConstutivo.novoComponenteConstrutivo.nome}" /> 
      <h:outputText value="Categoria: "/> 
      <p:selectOneMenu value="#{novoComponenteConstutivo.idCategoriaCamada}" id="selectMenuCategoria" style="width: 305px;"> 
      <f:selectItems value="#{novoComponenteConstutivo.todasAsCategorias}" var="categoria" itemLabel="#{categoria.categoria}" itemValue="#{categoria.id}"/> 
      <f:ajax event="valueChange" execute="selectMenuCategoria" listener="#{novoComponenteConstutivo.setarCategoriaDoNovoComponente()}" render="testi" /> 
      </p:selectOneMenu> 
      <h:outputText value="Descrição: "/> 
      <p:inputTextarea value="#{novoComponenteConstutivo.novoComponenteConstrutivo.descricao}" style="width: 295px; height: 50px;"/> 
      <h:outputText value="Fabricante: "/> 
      <p:selectOneMenu value="#{novoComponenteConstutivo.idFabricante}" id="selectMenuFabricante" style="width: 305px;"> 
      <f:selectItems value="#{novoComponenteConstutivo.todosOsFabricantes}" var="fabricante" itemLabel="#{fabricante.nome}" itemValue="#{fabricante.id}" /> 
      <f:ajax execute="selectMenuFabricante" event="valueChange" listener="#{novoComponenteConstutivo.setarFabricanteDoNovoComponente()}" render="testi2" /> 
      </p:selectOneMenu> 

     </h:panelGrid> 
     <h:outputText value="#{novoComponenteConstutivo.idCategoriaCamada}" id="testi"/> 
     <h:outputText value="#{novoComponenteConstutivo.idFabricante}" id="testi2"/> 
     </p:layoutUnit> 
     <p:dialog style="height: 300px; width: 500px;" id="dialogUpLoad" widgetVar="dialogUpLoad" > 
     <p:fileUpload fileUploadListener="#{novoComponenteConstutivo.uploadImagem}" update="foto" oncomplete="dialogUpLoad.hide();" multiple="false" /> 
     </p:dialog> 
    </p:layout> 
    <p:separator/> 
    <p:layout style="height: 150px; padding-left: 40px;" > 
     <!--  --> 
     <p:layoutUnit position="center" style="border: none;"> 
     <h:outputText value="Características Físicas" style="font-size: 18px;"/> 
     <h:panelGrid columns="2" > 
      <h:panelGrid columns="2" style="font-size: 14px; padding-top: 20px;" > 
      <h:outputText value="Condutividade Térmica: "/> 
      <p:inputText value="#{novoComponenteConstutivo.novoComponenteConstrutivo.condutividade}" /> 
      <h:outputText value="Calor Específico: "/> 
      <p:inputText value="#{novoComponenteConstutivo.novoComponenteConstrutivo.calorEspecifico}"/> 
      <h:outputText value="Densidade Mínima: " /> 
      <p:inputText value="#{novoComponenteConstutivo.novoComponenteConstrutivo.densidadeMinima}"/> 
      </h:panelGrid> 
      <h:panelGrid columns="2" style="font-size: 14px; padding-top: 20px; margin-left: 45px;" > 
      <h:outputText value="Densidade Máxima: "/> 
      <p:inputText value="#{novoComponenteConstutivo.novoComponenteConstrutivo.densidadeMaxima}"/> 
      <h:outputText value="Espessura: "/> 
      <p:inputText value="#{novoComponenteConstutivo.novoComponenteConstrutivo.espessura}"/> 
      </h:panelGrid></h:panelGrid> 
     </p:layoutUnit> 
     </p:layout> 
     <h:commandLink value="confirm" style="position: absolute; right: 0px; font-size: 12px;" onclick="showDivConfirmacaoCadastroComponente();" > 
     <f:ajax execute="@form" render=":formConfimacaoCadastroComponente" event="click" /> 
     </h:commandLink> 
    </div> 
    </h:form> 

它適用於谷歌Chrome和Firefox,但是IE對話框不會關閉,圖像不更新。

+0

一些Primefaces功能無法在IE瀏覽器很好地工作(除非你做了一些解決方法),特別是如果你使用的是舊版本。檢查Primefaces的論壇來檢查您的IE版本兼容性,也許有人已經問過一些關於它的問題。 –

+0

Primefaces應該與IE 7兼容,直到版本3.5。所以你不應該有問題。 –

+0

問題是,從fileupload更新和oncomplete不工作在IE上。當我刷新頁面時,圖像改變 –

回答

1

這可能是因爲組件ID和widgetVar是相同的。

id="dialogUpLoad" widgetVar="dialogUpLoad" 

請參閱此SO question以及。

+0

我改變了組件ID和widgetVar,但問題依然存在。圖像未更新,並且對話框未關閉 –

+0

問題是,從fileupload更新和oncomplete在IE上不起作用。當我刷新頁面時,圖像改變。 –

0

是的,好比說user1351585,改變你的id =「dialogUpload」 的名稱,並在web.xml中增加以下代碼:

<filter> 
     <filter-name>PrimeFaces FileUpload Filter</filter-name> 
     <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>PrimeFaces FileUpload Filter</filter-name> 
     <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping>