初めて質問させていただきます。よろしくお願いします。
###前提・実現したいこと
JSFを使った環境で、同じ javascriptやcss が複数回読み込まれる事を防止したいと考えています。
現在[補足情報]に記載の環境にて、webアプリの開発を進めています。
この中で、JSF の機能を使い、単一ページを複数のパートに分割し、(メニュー)の選択によって、
"動的に更新するコンテンツ"を記載した各ページファイル (part1.xhtml, part2.xhtml...)を、
ajax によって再読み込みさせています。
コンテンツの切り替え動作については特に問題は出ていません。
が.....(以下へ続く)
###発生している問題・エラーメッセージ
動的コンテンツ、つまり partNN.xhtml の切替の為にこの部分のみを ajax で読み込んだ場合、
読み込んだデータには、
<?xml version='1.0' encoding='UTF-8'?> <partial-response id="j_id1"> <changes> <update id="matter"> <![CDATA[<div id="matter" class="ui-outputpanel ui-widget" style="font-size: 12px"> <head id="j_idt22"> <link type="text/css" rel="stylesheet" href="/portal/javax.faces.resource/theme.css?ln=primefaces-aristo" /> <link type="text/css" rel="stylesheet" href="/portal/javax.faces.resource/components.css?ln=primefaces&v=6.1" /> <script type="text/javascript" src="/portal/javax.faces.resource/jquery/jquery.js?ln=primefaces&v=6.1"></script> <script type="text/javascript" src="/portal/javax.faces.resource/core.js?ln=primefaces&v=6.1"></script> ..... -------------------------
のように、<head> に script や css の読込が記載されています。
コンテンツ切り替えでは無く、index.xhtml としてページ全体の再読み込みを行った
(つまり、index.xhtml 中に 最初の動的コンテンツがマージされた状態) 場合、
index.xhtml の <head> に同様の記載はありますが、動的コンテンツのパート部分には
この記載は見られません。
恐らく、"<h:outputScript..." と同じ処理が実施され、動的コンテンツの <scritp>宣言は
(既に index.xhtml 側に記載がある為) 省略されたものかと思います。
目的としては、<partial-response>の場合でも、<head> での javascript や css の宣言を
させないようにしたいと考えています。読み込んだコンテンツはあくまで読込済み
既存コンテンツの一部入れ替え部品ですから改めて <javascript>等を<head>で宣言する必要
は無いと考えています。余分なオーバーヘッドですし、仮に javascript 内の初期化処理が
再度稼働して状態を壊してしまう恐れもあるのでは、と考えています。
現時点で明確な誤動作が発生している訳ではありませんが、今後を踏まえ、予め対策して
おきたいと考えています。
###試したこと
動的コンテンツを、ui:composition では無く <html> で囲んだりとか幾つか試しましたが
状況は変わりませんでした。まぁ、ui:composition の外側は基本無視の筈ですので、
そりゃそうか、と言う感じですが。
###補足情報(言語/FW/ツール等のバージョンなど)
[環境]
payara 4.1.1
primefaces 6.1
あなたの回答
tips
プレビュー