首页 文章

发生fileUpload时无法更新outputText

提问于
浏览
0

我正在使用primefaces 6,并希望编写一个包含多个文件上传字段的表单 . 这将是动态的:有时会有6个字段,有时只有2个字段,有时候是29个字段(!) .

在每个fileUpload之后,我有一个outputText来显示上传文件的名称,如果它已经上传的话 . 当文件上传发生时,我的消息和growl组件被成功更新,但不是outputText字段(恰好是具有动态id的字段) . 我怎样才能解决这个问题?我已经尝试更新outputText字段,母亲h:panelGroup和p:panelGrid . 我认为我的动态ID解决方案无法运行 .

<c:forEach items="#{myBean.myList}" var="tipoArq" varStatus="varStatus">
    <p:panelGrid id="#{'panelGroupArquivo'.concat(tipoArq.ordem)}">
        <div style="overflow: hidden; margin-bottom: 5px;">
            <p:fileUpload id="#{'arquivo'.concat(tipoArq.ordem)}"
                fileUploadListener="#{myBean.uploadSomeFile}"
                mode="advanced" 
                update="#{'nomeArquivo'.concat(tipoArq.ordem)} messages :form:growl" 
                auto="true"
                sizeLimit="#{tipoArq.tipoArqAnual.maxSize}" 
                allowTypes="/(\.|\/)(pdf)$/"
                style="width: 500px;" required="true">
                <f:attribute name="idTipoArquivoAnualTipoUg" value="#{tipoArq.id}" />
            </p:fileUpload>
        </div>
        <h:outputText id="#{'nomeArquivo'.concat(tipoArq.ordem)}"                                    
             value="#{myBean.getFileNameByOrdem(tipoArq.ordem)}" style="margin-right: 5px;"/>
    </p:panelGrid>
    
</c:forEach>

我尝试在update属性中使用以下语法:

{'nomeArquivo'.concat(tipoArq.ordem)}

{':form:nomeArquivo'.concat(tipoArq.ordem)}

{'形式:nomeArquivo'.concat(tipoArq.ordem)}

{'panelGroupArquivo'.concat(tipoArq.ordem)}

{':form:panelGroupArquivo'.concat(tipoArq.ordem)}

{nomeArquivo.concat(tipoArq.ordem)}(如评论中所建议)

这个panelGrid最初是一个h:panelGroup,试图更新它没有成功 . 有没有其他方法可以指示p:fileUpload我希望它更新他旁边的outputText字段?

提前谢谢,抱歉我的英语不好 . =]

1 回答

  • 0

    真正的问题是我的outputText的值是空的 . 我通过调试页面的请求发现了它:在fileUpload之后,有一个XML格式的响应,其他消息组件包含正确的文本,并且span字段(outputText)也存在,但是空的 .

相关问题