0

Liferay での展開に対応するように、Spring MVC サーブレット アプリケーションを移植しています。アプリケーションを Spring MVC ポートレットに変換しています。私のアプリケーションは、フロントエンドとして html + javascript を使用しています。相対 URL が機能していないため、index.html に .js または .css ファイルをインポートできません。この点で何か助けはありますか?

4

2 に答える 2

1

ファイル内の javascript ファイルと css ファイルの場所を指定すると、liferay-portlet.xml自動的に追加されます。同じものを html/jsp ファイルに明示的に追加する必要はありません。

liferay-portlet.xml に、次の属性を正しいファイル パスとともに追加してください。

<header-portlet-css>/css/main.css</header-portlet-css>
<header-portlet-javascript>/js/main.js</header-portlet-javascript>

また、画像などの静的リソースにアクセスする場合は、次のようなパスを使用できます

<img src='<%=request.getContextPath()%>/images/gear.png' class='settings' />

構造はこのようになっています

-ポートレット ---docroot ------画像 --------gear.png

于 2013-08-19T06:38:57.053 に答える
0

参照は Web アプリケーション コンテキスト参照に関連しています。これは通常、ポートレット インスタンスと他のいくつかの依存構造 (関連する LR テーマ) を含むポータル ROOT コンテキストであり、想定するポートレット (アプリケーション) コンテキストではありません。したがって、解決策は、パス定義の前にプレフィックスを付けたポータル インスタンス固有のグローバル変数を使用することです。これを実現するには、HTML ページのコンテンツをレンダリングする前に、このパスを構築する必要があります。これは通常、いくつかの Liferay ユーティリティ クラスを使用して実現されます。たとえば、次のような JSP の場合です。

<link href="<%= PortalUtil.getStaticResourceURL(request, request.getContextPath() + "/css.jsp", portlet.getTimestamp()) %>"

どうやら、JSP のようなサーバー側のスクリプトを使用していない場合 (BTW は良い考えではないと思います)、他の Java レイヤー機能を使用してこれを解決し、ブラウザーによってレンダリングされる前に HTML に書き込む必要があります。

于 2013-08-19T04:22:23.003 に答える