0

ユーザーは古い形式のリンクでドキュメントを開きますhttp://server/db.nsf/VIEW_UNID/DOC_UNID。フォームには、代わりにXPageを開くように設定されたプロパティがあります。

これらのリンクの発信元は、「ユニバーサルエージェント」によって生成された電子メール通知です。ドキュメントへのリンクを送信するだけです。どのフォームがどのXPageに関連付けられているかがわからないため、「/ page.xsp&documentId=...」の代わりにユニバーサルリンクが生成されます。

問題:クライアントで計算された相対リンクが機能しない-< a href = "/page.xsp?params">より効果的である必要があります-ラウンドトリップがなく、ページの読み込み時に簡単に計算できます。彼らはhttp://server/db.nsf/0/page.xsp?params、当然、エラー404で終わるものを評価します。

XPageには「ヘルプ」セクションが含まれています。これは、テキスト、画像、およびリンクを含むRTフィールドを持つ別のドキュメントです。また、そのRTフィールドの相対リンクは、XPageが別のXPageビュー(/page.xsp)から開かれると機能しますが、通知リンク(/ 0 / UNID)からリダイレクトされると失敗します。

質問http://server/db.nsf/page.xsp?documentId=DOC_UNID:昔ながらのURLでリダイレクトされたドキュメント/ビューを開いた後、ブラウザのアドレスバーを拡張XPages形式に効果的にリセットするにはどうすればよいですか?

4

3 に答える 3

1

主な問題は、サーバー側(SSJSで評価)とクライアント側(ブラウザーで評価)の相対リンクの不一致です。ドキュメントが昔ながらのリンクで開かれている場合に備えて、単純なリダイレクトで問題を解決しました。

<?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
        <xp:eventHandler event="onClientLoad" submit="false">
            <xp:this.script><![CDATA[var url = "#{javascript:context.getUrl()}";
    var l = window.location;
    if (url != l) {
        window.location.replace(url);
    }
    ]]></xp:this.script>
    </xp:eventHandler>
</xp:view>

簡単に言うと、オープンURLが内部URL(XSPエンジンによって解決される)と異なる場合、ブラウザーは正しいURLにリダイレクトします。これにより、インライン画像(画像リソース)と添付ファイルに関する多くの問題が解決されました。

于 2012-07-18T08:19:57.997 に答える
0

ルートに戻りたい場合は、「。/ page.xsp&params」または../を試してください。IBMがコーディングでもこれを行っていることに気づきました。お役に立てれば。

于 2012-05-29T18:49:53.293 に答える
0

XPagesでpageBaseUrlプロパティを設定しようとしましたか?これは、相対リンクを修復するのに役立ちます。

<xp:this.pageBaseUrl>
   <xp:baseUrl>
      <xp:this.href><![CDATA[#{javascript:"http://stackoverflow.com/"}]]></xp:this.href>
   </xp:baseUrl>
</xp:this.pageBaseUrl>

別のアイデアは、URLが昔ながらのスタイルの場合、XPageのbeforePageLoad- eventでリダイレクトを実行することです。

于 2012-06-04T05:38:49.950 に答える