3

xp:repeat コントロールで xp:fileDownload コントロールを使用する方法を知っていますか?

xp:repeat コントロールをビューにバインドしました。したがって、1 行ごとに NotesViewEntry を取得できます。

しかし、xp:fileDownload コントロールで var 変数を使用して添付ファイルを取得できませんでした。

xp:panel に xp:repeat を配置し、パネル オブジェクトにデータ ドキュメントを作成しました。このパネル内に fileDownload コントロールを配置しました。そして、ドキュメント データ ソースを fileDownload にバインドします。

うまくいきませんでした!

アイディアがある ?

10 個のドキュメントがあり、すべてのドキュメントにもう 1 つの添付ファイルがあります。これらのファイルを 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>

ありがとう

代替ソリューション ファイルDownloadLinks in xp:repeat Control

このニーズを解決する別の方法。

@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>

4

1 に答える 1

1

dominoDocument データソースを使用している場合、documentId を渡す場合は ignoreRequestParam="true" を設定する必要があると確信しています。それ以外の場合は、クエリ文字列パラメーターを参照します。その後、ファイルのダウンロードが機能するはずです。

2 番目のオプションでは、複数の値を個別のエントリとして表示するように列が設定されていますか? 繰り返しがカンマ区切りの文字列値を受け取っている場合、機能しません。繰り返しは、単一の文字列ではなく、コレクションを想定しています。NotesViewEntry の columnValues() プロパティが複数値であることを確認してください。それでも、添付ファイルが 1 つしかない場合は失敗すると思います。

列の値を使用するのではなく、viewEntry.getDocument() から直接取得した NotesEmbeddedObject コレクションを繰り返し渡します。繰り返しの各要素は NotesEmbeddedObject になります。

于 2012-11-02T13:25:11.583 に答える