Richfaces在上传附件的时候,有时需要同时向BackingBean中传递参数。传参的方法如下:
在标签中,支持 a4j:support 标签。这个标签的作用(event="onupload")即在上传动作发生以前执行。即我们可以将要传递或者初始化的参数通过 customerMemBean.setAttachInfo方法将参数初始化进BackingBean里。
例子如下:
<rich:fileUpload
fileUploadListener="#{customerMemBean.uploadListener}"
autoclear="true" addControlLabel="导入成员" uploadControlLabel="上传"
cancelEntryControlLabel="取消" stopControlLabel="停止"
stopEntryControlLabel="停止" noDuplicate="true" listHeight="0"
listWidth="300" id="upload" maxFilesQuantity="100" accesskey="#{formAdminInfo.corpId}"
acceptedTypes="xls" >
<a4j:support event="onupload" action="#{customerMemBean.setAttachInfo}">
<a4j:actionparam name="corpId"
value="#{formAdminInfo.corpId}"
assignTo="#{customerMemBean.corpId}"></a4j:actionparam>
<a4j:actionparam name="prodId"
value="#{formAdminInfo.prodId}"
assignTo="#{customerMemBean.prodId}"></a4j:actionparam>
<a4j:actionparam name="accBaseId"
value="#{formAdminInfo.accBaseId}"
assignTo="#{customerMemBean.accBaseId}"></a4j:actionparam>
</a4j:support>
<a4j:support event="onuploadcomplete" action="#{customerMemBean.setAttach}" reRender="dataList,msg,msg4,msg5,msg6,msg7" oncomplete="openExcelEidt()">
</a4j:support>
</rich:fileUpload>
这样我们在提交附件的时候,提交以前,customerMemBean.setAttachInfo方法会被执行一次。而以下的三个参数
<a4j:actionparam name="corpId"
value="#{formAdminInfo.corpId}"
assignTo="#{customerMemBean.corpId}"></a4j:actionparam>
<a4j:actionparam name="prodId"
value="#{formAdminInfo.prodId}"
assignTo="#{customerMemBean.prodId}"></a4j:actionparam>
<a4j:actionparam name="accBaseId"
value="#{formAdminInfo.accBaseId}"
assignTo="#{customerMemBean.accBaseId}"></a4j:actionparam>
会被提交到BackingBean的相关字段中去。
在标签中,支持 a4j:support 标签。这个标签的作用(event="onupload")即在上传动作发生以前执行。即我们可以将要传递或者初始化的参数通过 customerMemBean.setAttachInfo方法将参数初始化进BackingBean里。
例子如下:
<rich:fileUpload
fileUploadListener="#{customerMemBean.uploadListener}"
autoclear="true" addControlLabel="导入成员" uploadControlLabel="上传"
cancelEntryControlLabel="取消" stopControlLabel="停止"
stopEntryControlLabel="停止" noDuplicate="true" listHeight="0"
listWidth="300" id="upload" maxFilesQuantity="100" accesskey="#{formAdminInfo.corpId}"
acceptedTypes="xls" >
<a4j:support event="onupload" action="#{customerMemBean.setAttachInfo}">
<a4j:actionparam name="corpId"
value="#{formAdminInfo.corpId}"
assignTo="#{customerMemBean.corpId}"></a4j:actionparam>
<a4j:actionparam name="prodId"
value="#{formAdminInfo.prodId}"
assignTo="#{customerMemBean.prodId}"></a4j:actionparam>
<a4j:actionparam name="accBaseId"
value="#{formAdminInfo.accBaseId}"
assignTo="#{customerMemBean.accBaseId}"></a4j:actionparam>
</a4j:support>
<a4j:support event="onuploadcomplete" action="#{customerMemBean.setAttach}" reRender="dataList,msg,msg4,msg5,msg6,msg7" oncomplete="openExcelEidt()">
</a4j:support>
</rich:fileUpload>
这样我们在提交附件的时候,提交以前,customerMemBean.setAttachInfo方法会被执行一次。而以下的三个参数
<a4j:actionparam name="corpId"
value="#{formAdminInfo.corpId}"
assignTo="#{customerMemBean.corpId}"></a4j:actionparam>
<a4j:actionparam name="prodId"
value="#{formAdminInfo.prodId}"
assignTo="#{customerMemBean.prodId}"></a4j:actionparam>
<a4j:actionparam name="accBaseId"
value="#{formAdminInfo.accBaseId}"
assignTo="#{customerMemBean.accBaseId}"></a4j:actionparam>
会被提交到BackingBean的相关字段中去。
Richfaces标签中还支持一些其它Ajax事件,如例子中的
<a4j:support event="onuploadcomplete" action="#{customerMemBean.setAttach}" reRender="dataList,msg,msg4,msg5,msg6,msg7" oncomplete="openExcelEidt()">
</a4j:support>
其中(event="onuploadcomplete")标识本动作将在附件上传完成以后执行,我们可以在此方法中做一些其他的事情,如刷新页面,提示一些业务信息等等。