您是否知道如何在xp:repeat控件中使用xp:fileDownload控件?
我绑定了xp:重复控件来查看。所以我可以每行获得NotesViewEntry。
但我没有在xp:fileDownload控件中使用var变量获取附件。
我在xp:panel中放置了xp:repeat并在面板对象中创建了数据文档。我在这个面板中放置了fileDownload控件。并将文档数据源绑定到fileDownload。
没有用!
有个主意吗?
我有10个文件,每个文件还有一个附件。我想使用filedownload控件显示这些文件。
<xp:this.data>
<xp:dominoView var="viewReviews" viewName="vwLookupGoruslerHepsi"></xp:dominoView>
</xp:this.data>
<xp:repeat id="repeat1" value="#{viewReviews}" var="viewEntry">
<xp:table style="width:100%;border:1px solid #ddd;margin-bottom:5px;"
cellpadding="2">
<xp:tr valign="top">
<xp:td rowspan="5" style="width:250px">
<xp:text id="computedField9" tagName="h4" escape="true">
<xp:this.value><![CDATA[#{viewEntry["GorusBildirecek_CN"]}]]></xp:this.value>
</xp:text>
</xp:td>
</xp:tr>
<xp:tr valign="top">
<xp:td>
<xp:panel id="panelGorusEkler">
<xp:this.data>
<xp:dominoDocument var="docGorus" formName="frmGorus"
action="openDocument" documentId="#{javascript:viewEntry.getNoteID()}">
</xp:dominoDocument>
</xp:this.data>
<xp:text escape="true" id="computedField1"
value="#{docGorus.GorusBildiren_OU1_NAME}">
</xp:text>
<xp:fileDownload rows="30" id="fileDownload3"
var="rowFile" indexVar="rowIndex" value="#{docGorus.Ekler}">
</xp:fileDownload>
</xp:panel>
</xp:td>
</xp:tr>
</xp:table>
</xp:repeat>
由于
xp中的替代解决方案文件下载链接:重复控制
解决这一需求的替代方法。
我添加了一个包含 @AttachmentNames 值的列。 (列名:$ Ekler)
<xp:tr valign="top">
<xp:this.rendered><![CDATA[#{!empty viewEntry["$Ekler"]}]]></xp:this.rendered>
<xp:td>
<xp:repeat id="repeat2" value="#{viewEntry.$Ekler}" var="embeddedFile">
<xp:link escape="true" id="link1" style="margin-right:10px">
<xp:this.text><![CDATA[#{javascript:var aSizes:Array = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
var embedFile:NotesEmbeddedObject = viewEntry.getDocument().getAttachment(embeddedFile);
var calcnr:Number = Math.floor(Math.log(embedFile.getFileSize())/Math.log(1024));
var fSize = (embedFile.getFileSize()/Math.pow(1024, Math.floor(calcnr))).toFixed(2)+" "+ aSizes[calcnr];
return embedFile.getName() + " (" + fSize + ")"}]]></xp:this.text>
<xp:this.value><![CDATA[#{javascript:"/" + facesContext.getExternalContext().getRequestContextPath() + "/xsp/.ibmmodres/domino/OpenAttachment/" + facesContext.getExternalContext().getRequestContextPath() + "/" + viewEntry.getDocument().getUniversalID() + "/Ekler/" + embeddedFile;}]]></xp:this.value>
</xp:link>
</xp:repeat>
</xp:td>
答案 0 :(得分:1)
如果您正在使用dominoDocument数据源,我非常确定如果您正在传入documentId,则需要设置ignoreRequestParam =“true”。否则它会查找查询字符串参数。然后文件下载应该可以工作。
对于第二个选项,列是否设置为将多个值显示为单独的条目?如果重复正在接收以逗号分隔的字符串值,则它将不起作用:重复期望集合,而不是单个字符串。检查以确保NotesViewEntry的columnValues()属性是多值。即便如此,如果只有一个附件,我希望它会失败。
不是使用列值,而是直接从viewEntry.getDocument()传递重复检索的NotesEmbeddedObject集合。重复中的每个元素都将是一个NotesEmbeddedObject。