通过p:fileUpload mode = advanced上传文件时传递另一个输入组件的值

时间:2014-04-10 17:28:28

标签: jsf file-upload jsf-2 primefaces

我有一个添加primefaces fileupload。

<h:form id="form" enctype="multipart/form-data">    
<h:selectOneMenu id="Collection" value="#{imputData.collList.currentColl}">
<f:selectItems value="#{imputData.collList.collList}" />
</h:selectOneMenu>      
<p:fileUpload id="fileUpload" label="Durchsuchen" uploadLabel="Upload" cancelLabel="zurück" fileUploadListener="#{imputData.handleFileUpload}" mode="advanced" dragDropSupport="true" update="Collection,messages" sizeLimit="100000" allowTypes="/(\.|\/)(txt|cvs)$/" />  

 <p:growl id="messages" showDetail="true"/>             
<h:commandButton id="read" action="#{imputData.imput}" value="#{msgs.read}"/>

</h:form>

看起来像这样 date Improt Primefaces

我有两个问题。 我怎样才能使Fileupload更小。在孔页上意味着不宽?

要从selectOneMenu获取名称,我必须点击阅读按钮(Lesen)。如果我点击上传按钮,我得不到SelectOneMenu的信息(null)。我必须写ajax =&#34; true&#34;在<p:fileUpload..或其他东西从上传按钮中的selectOneMenu获取信息?

我在fileUpload update="Collection,messages"的更新中写了Collection中的Id,但它并没有解决我的问题。

1 个答案:

答案 0 :(得分:5)

您可以使用fileUpload的onstart,它会调用remoteCommand来处理您的selectOneMenu并将其保存为必须视图作用域的同一个bean的属性。

<p:fileUpload id="fileUpload" mode="advanced" onstart="submitCollection()" />

<p:remoteCommand name="submitCollection" process="@this Collection" />

至于fileUpload的宽度,您可以使用以下css:

.ui-fileupload {
   width: 400px;//change the px into what fits you
}

希望这有帮助。