8

tomcat urlrewriteプラグインを使用して、アウトバウンドURLとインバウンドURLを書き換えます。これを行うには、JSTLタグを使用する必要があります。

これはクリーンURLとi18nに最適ですが、次のようなタグ内のタグを含む醜いコードを生成します。

<link href='<c:url value="/content/bootstrap/css/bootstrap.css" />' rel="stylesheet" />

また:

<a href='<c:url value="/nextPage.jsp"/>' />Next Page</a>

1つの代替方法は、次のような変数を使用することです。

<c:url value="/nextPage.jsp" var="nextPageUrl"/>
<a href='${nextPageUrl}' />Next Page</a>

これは本当にきれいですが、冗長です。

これを行うための表現言語に優しい方法はありますか?

私は次のようなものを望んでいました:

<a href='${url "/nextPage.jsp}' />Next Page</a>

ありがとう。

4

3 に答える 3

2

箱から出してすぐに使えるものはありませんが、独自のEL関数を作成することを妨げるものはなく、次のようなものを使用します。

<a href='${myFn:url("/nextPage.jsp")}' />Next Page</a>

標準のc:urlタグよりも読みやすいとは思いませんが、パラメーターの名前と値を受け入れる必要がある場合はさらに悪くなります。

EL関数を定義および使用する方法については、http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.htmlを参照してください。

于 2012-05-31T19:56:48.557 に答える
0

最終的に思いついた解決策は、カスタム タグを使用して CSS と JS の問題を解決することでした。もちろん、タグにも同様のソリューションを適用できますが、まだその必要はありません。

<my:csslink url="/css/custom.css" />
<my:script url="/script/myscript.js" />

CSS タグは次のようになります。Javascript のタグは明らかに非常に似ています。

<%@tag language="java" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@attribute name="url" required="true" type="java.lang.String" description="the absolute (to the webapp) path of the css file"%>
<c:url var="encUrl" value='${url}' />
<link href='${encUrl}' rel='stylesheet' />

jsp にタグをインポートすることを忘れないでください。

<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>

状況によっては、カスタム EL ソリューションの方がクリーンですが、追加のパラメーターまたは属性のサポートを追加したい場合は、おそらくタグが適しています。

于 2012-12-21T16:18:20.017 に答える