2011-12-05 2 views
5

私は、現在のURLで動作するJSP条件を設定しようとしています。基本的には、URLが/my-suffixで終了し、クエリ文字列などが含まれていない場合、何かしたいと思っています。そのため、真ん中にあるURLの部分文字列に対してテストする必要があります。URLパターンに対してテストする場合、JSTL c:を使用できますか?

<c:if test="url not including query string+ ends with '/my-suffix'"> 
    do something... 
</c:if> 

これを行う方法はありますか?

答えて

12

チェックアウトJSTL functions taglib。利用できる機能の1つはfn:endsWith()です。これは、たとえばために行うことができます:

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
... 
<c:if test="${not fn:endsWith(pageContext.request.requestURI, '/my-suffix')}"> 
    <p>URL does not end with /my-suffix.</p> 
</c:if> 

(クエリ文字列が含まれていません${pageContext.request.requestURI}戻りHttpServletRequest#getRequestURI()

または、あなたは、このように来るサーブレット3.0互換コンテナにすでにしている場合このようなどのTomcat 7、Glassfishの3、などEL 2.2、と一緒に、あなたはまた、ちょうどそのようなString#endsWith()として、直接引数を持つメソッドを呼び出すことができます。

<c:if test="${not pageContext.request.requestURI.endsWith('/my-suffix')}"> 
    <p>URL does not end with /my-suffix.</p> 
</c:if> 
+0

クエリ文字列などを削除するのはどうですか? request.requestURIはその部分を含んでいませんか? –

+0

@トニー:いいえ、それは私の答え(javadocのリンクをクリックして、権威ある証拠*を参照してください。問題ありますか?それとも、まったく試してみませんでしたか? – BalusC

+0

こんにちはBalusC、私はちょうど他のものと気が散っています。私がこのことをもう一度やり直すときはいつでも、あなたの答えが受け入れられると確信しています(あなたが担当者を必要とするかのように)= P –

0

ファーズをあなたはURLを分割する必要があり、クエリのパラメータをフリスビーにしてから、endなどを使ってチェックしてください。

文字列がパスにまったく存在するかどうかを確認できますか?これを行うには

>>

パスを取得し、あなたは評価したいURLや文字列のVARSを設定します。あなたの文字列がのindexOf(リターンを使用して、パスにある場合

<c:set var="url" value="${ pageContext.request.requestURI }" /> 
<c:set var="stringToHunt" value="Your-String-Here" /> 

は今すぐチェック - 1文字列が見つからない場合):

<c:if test="${ fn:indexOf(url , stringToHunt) ne -1 }"> 
    This page does not contain your string! 
</c:if> 

**私はJSTL/ELに新しいですし、唯一のかなり平凡なタスクのために、このロジックを使用しています - それは、現在の場合のナビゲーションボタンにアクティブなクラスを追加しますページ。私は商業的に敏感な何でもこの方法をお勧めしません! 幸運。さらにBalusCの答えに追加するには

4

あなたはどこにでもURLの文字列を一致させるために探している場合は、次を使用しても動作します:

<c:if test="${fn:contains(pageContext.request.requestURI, 'my-string')}"> 
    <p>URL Contains my string</p> 
</c:if> 

追記:どちらも私たちの答えのタイトルはいえ示唆されたものをカバー(パターンマッチング)しかし、それは彼のポストでOPが探していたものではありません。それは実際には少し複雑ですが、まだ実行可能です(jstlには正規表現マッチがありません)。誰かがそれを行う必要がある場合は、別の投稿を作成し、それにリンクして、私はあなたを助けようとします。

関連する問題