2017-10-10 35 views
0

我正在使用PrimeFaces 6.0。我使用了selectOneRadio标签并从数据库填充列表,然后我想使用选定的值来标识所选文档的类型并将其传递给fileUploadListener,以便将正确的文档类型附加到正在上传的文件上。我如何通过选定的值?如何将选择的值从selectOneRadio标记传递给PrimeFaces中的fileUpload标记

<p:selectOneRadio id="docType" value="#{fileUploadBean.docType}" layout="grid" columns="1"> 
    <f:selectItems var="document" value="#{fileUploadBean.docDescriptionList}" itemLabel="#{docType}" itemValue="#{docType}" /> 
</p:selectOneRadio> 

<p:fileUpload id="docFile" value="#{fileUploadBean.file}" mode="advanced" allowTypes="/(\.|\/)(pdf)$/" 
    fileUploadListener="#{fileUploadBean.uploadFile}" multiple="true" update="messages"> 
</p:fileUpload> 

<p:growl id="messages" showDetail="true" /> 
+0

为什么你需要将它传递给fileUpload TAG?你应该'只'将它发送给bean(例如通过使用ajax)... – Kukeltje

+0

@Kukeltje,当用户选择一个项目时,我尝试使用将它传递给bean。当我以后上传文件时,该值不成立。 – Yanty

+0

然后检查你的豆的范围 – Kukeltje

回答

0

你需要添加变量允许的类型,然后更新它时,单选按钮变为:

<p:selectOneRadio id="docType" 
        value="#{fileUploadBean.docType}" 
        layout="grid" 
        columns="1"> 
    <p:ajax listener="#{fileUploadBean.updateAllowTypes}" update="@form" /> 
    <f:selectItems var="document" 
        value="#{fileUpoadBean.docDescriptionList}" 
        itemLabel="#{docType}" 
        itemValue="#{docType}" /> 
</p:selectOneRadio> 

<p:fileUpload id="docFile" 
       value="#{fileUploadBean.file}" 
       mode="advanced" 
       allowTypes="#{fileUploadBean.allowTypes}" 
       fileUploadListener="#{fileUploadBean.uploadFile}" 
       multiple="true" 
       update="messages"> 
</p:fileUpload> 

而在的Java bean:

private String allowTypes; //getters and setters 
... 
public void updateAllowTypes(){ 
    allowTypes = ... //Specify allowed types 
} 
+0

谢谢你的帮助,但它并不像我希望的那样工作。我没有试图改变allowTypes值,我仍然只想要pdf文件,但我的意思是,单选按钮将列出文档类型,如“证书”,“简历”,并根据选择,上传的文件将在“证书”或“简历”下提交。 – Yanty

相关问题