2011-10-18 10 views
1

私Util.javaは、以下の方法が含まれます。ユーザーがAndroidブラウザを使用しているかどうかを確認するにはどうすればよいですか?

public static boolean isAndroid(HttpServletRequest request) { 
    boolean retVal = false;  
    String browser = request.getHeader("User-Agent"); 
    if (browser != null && !browser.trim().equals("") && browser.contains("Android")) { 
     retVal = true; 
    }  
    return retVal; 
} 

をそして私はBaseAction.java内のコードの下にきました(それはまたタイプのHttpServletRequestの変数を要求している)ActionSupport &はServletRequestAware、ServletResponseAwareを実装して延びています。

public boolean isAndroid(){ 
    return Util.isAndroid(request); 
} 

さて、それは特定のアクションを実行している場合、デバイスは&アンドロイドである場合、私はJSPで確認したいので、私はコードの下に使用しています:

<s:if test="%{#android=='false'}"> 
    <a href="/myUrl"></a> 
</s:if> 
<s:else> 
    .... 
</s:else> 

しかし、上記のコードは思えません。働くいずれか1つはなぜ動作していないことを提案することができます&場合は、JSPでチェックする別の方法は、ユーザーがAndroidブラウザを使用しているかどうかを確認するには?

ありがとうございます!

答えて

1

あなたは、文字列"false"に対して比較しているが、実際の真偽値と照合する必要があり、必要に応じて<s:if test="android">または<s:if test="!android">を使用することができます。 #文字のみスタックコンテキストでという名前値のためである -

また、あなたは値をスタックにプッシュするために必要ではない#、とプロパティ名を接頭辞います。

すべてのことが言った、なぜそんなことをやっているのですか?

+0

+1私から、より多くのupvotesに値する。 – Shahzeb

0

私は以下のJavaScriptコードが役に立つと思います。

var ua = navigator.userAgent.toLowerCase(); 
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); 
if(isAndroid) { 
// Do some action you want to! 
} 

だけ..

おかげでそれをチェックしてください。

+0

私はJavascriptでそれをしたくありません。 JSPでどのように使用しますか? – Mike

1
JSPで

<c:set var="browser" value="${header['User-Agent']}" scope="session"/> 
2
String userAgent = request.getHeader("User-Agent"); 
boolean isAndroid = (userAgent != null && !userAgent.isEmpty() && userAgent.toLowerCase().contains("android")); 
0

ここで使用しているこのELますか?覚えているように、$はあなたのコードで%文字の代わりにELで使用する文字です。そして、私はあなたがアンドロイドのプロパティと比較するときに 'false'で一重引用符を使用する必要はないと思います。だから私はこれがうまくいくと思います。しかし、最初にあなたのページの "android"変数にアクセスできるかどうかを確認してください。次のコードが機能しているかどうか確認してください。

<s:if test="${android eq false}"> 
    <a href="/myUrl"></a> 
</s:if> 

OR

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 
<s:if test="${fn:contains(header['User-Agent'],'Android'}"> 
    <a href="/myUrl"></a> 
</s:if> 
+1

'%{}'はStruts 2のOGNLエスケープです。 JSP ELではありません。 –

関連する問題