繁体   English   中英

p:ajax渲染后p:fileUpload无法正常工作

[英]p:fileUpload not working after rendered by p:ajax

我很困惑,为什么一旦p:ajax显示了组件p:fileUpload不调用fileUploadListener 如果我将其放在panelGrid之外,甚至将其删除,则可以正常工作。

什么不起作用:

<div class="pure-control-group"> 
    <label for="mostraNoIndex">Slideshow</label>
    <p:selectBooleanCheckbox value="#{destaqueCadastrarBean.d.apareceNoSlide}">
        <p:ajax event="change" update="upload"></p:ajax>
    </p:selectBooleanCheckbox>
</div>                                      

<h:panelGrid id="upload">
    <h:panelGrid rendered="#{destaqueCadastrarBean.d.apareceNoSlide}">
        <div class="pure-control-group"> 
            <label for="mostraNoIndex">Imagem</label>
            <p:fileUpload fileUploadListener="#{destaqueCadastrarBean.handleFileUpload}" mode="advanced" dragDropSupport="true" sizeLimit="100000000000" fileLimit="1" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />                                    
        </div>
   </h:panelGrid>
</h:panelGrid>

什么有效:

<div class="pure-control-group"> 
    <label for="mostraNoIndex">Slideshow</label>
    <p:selectBooleanCheckbox value="#{destaqueCadastrarBean.d.apareceNoSlide}">
    </p:selectBooleanCheckbox>
</div>  

<div class="pure-control-group"> 
    <label for="mostraNoIndex">Imagem</label>
    <h:fileUpload fileUploadListener="#{destaqueCadastrarBean.handleFileUpload}" mode="advanced" dragDropSupport="true" sizeLimit="100000000000" fileLimit="1" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />                                    
</div>

刚刚找到解决方案。 被调用的bean是RequestScoped ,将其更改为ViewScoped 我想是因为在窗体加载时请求了bean,并且p:fileUpload仅在创建bean之后出现,组件无法到达bean。 通过视图作用域,bean可用于之后的组件。 如果有人对技术有更明确的解释,我想更好地理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM