2

XPage (「xBase」という名前) では、コンテナー (div) 内に 2 つの IFrame があります。

<xp:div id="divIFrames">
    <iframe src="xTest.xsp?key=abc" id="iframe0" frameborder="0" width="100%" height="28px" scrolling="no"></iframe>
    <iframe src="xTest.xsp?key=def" id="iframe1" frameborder="0" width="100%" height="28px" scrolling="no"></iframe>
    <xp:label><xp:this.value><![CDATA[#{javascript:context.getUrl().toString();}]]></xp:this.value></xp:label>
</xp:div>

どちらの IFrame も、データベース内の別の XPage "xTest" を指しており、URL パラメータが異なります。簡単にするために、「xTest」には現在の URL のラベルのみが含まれています。

<xp:label value="#{javascript:context.getUrl().toString()}"></xp:label>

ただし、コンテナーの部分的な更新が機能せず、URL パラメーターが「xBase」に追加されます: $$ajaxid=view%3A_id1%3AdivIFrames

この問題は、URL パラメータを持つ iframe が複数ある場合にのみ発生します。たとえば、src に URL パラメーターがない複数の iframe や、URL パラメーターを持つ単一の iframe に対して適切に機能します。URL パラメータを持つ 2 つ以上の IFrame で機能しないのはなぜですか? ここで私が間違っていることを誰か知っていますか?

編集

XPage に複数の IFrame がある場合、部分的な更新ではなく、sessionScope の変数の設定が機能しないことが判明しました。これは現在の質問に合わないため、新しい質問を作成しました。ご迷惑をおかけして申し訳ありません!

4

1 に答える 1

2

xBase.xspの変更されたラベルは、部分的な更新が正しく機能したことを示しています。URL パラメータ

?$$ajaxid=view%3A_id1%3AdivIFrames

これは、部分的な更新がどのように機能するかによって追加されます。これは、XPage 自体に対する Ajax 要求であり、パラメーターは、要求で更新される要素の ID です。リクエスト URL を表示するラベルは、更新された DOM 要素内にあるため、表示されます。

context.getUrl()メソッドのキャッシュにより、「元の」クエリが表示されることもあれば、Ajax パラメーターを含む URL が表示されることもあります。サンプルコードを次のように変更すると...

facesContext.getExternalContext().getRequest().getQueryString();

... キャッシュなしでパラメーターが表示されます。

ところで: 1000 個の IFrame を使ってサンプル コードをテストしましたが、問題なく動作しています。

ご使用の環境 (Domino のバージョン、ブラウザなど) について詳しく教えてください。

于 2013-04-16T07:49:40.690 に答える