如何检查用户是否正在使用Android浏览器? [英] How to check if user is using Android browser?

查看:122
本文介绍了如何检查用户是否正在使用Android浏览器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Util.java包含以下方法:

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中检查设备是否为android&如果它正在执行某些操作,那么我正在使用以下代码:

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

但是上面的代码似乎不起作用.任何人都可以提出其为何无法正常工作的信息吗?是否还有另一种方法可以在JSP中检查用户是否正在使用Android浏览器?

谢谢!

解决方案

您正在与字符串"false"进行比较,但应根据实际的布尔值进行检查,并且可以根据需要使用<s:if test="android"><s:if test="!android">. /p>

此外,您还为属性名称添加了#前缀,这对于压入堆栈的值不是必需的-#字符仅适用于命名的值.堆栈上下文.

所有这些,为什么要那么做呢?

My Util.java contains following method:

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;
}

And I've below code in BaseAction.java (it also has request variable of type HttpServletRequest) which extends ActionSupport & implements ServletRequestAware, ServletResponseAware.

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

Now, I want to check in JSP if device is android & if it is perform certain action, so I'm using below code:

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

But the above code doesn't seem to work. Can any one suggest why its not working & if there is another way to check in JSP to see if user is using Android browser?

Thanks!

解决方案

You're comparing against the string "false" but should be checking against an actual boolean, and can use <s:if test="android"> or <s:if test="!android"> as required.

Also, you're prefixing the property name with a #, which is not necessary for values pushed on to the stack--the # character is only for named values in the stack context.

All that said, why bother doing it that way?

这篇关于如何检查用户是否正在使用Android浏览器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆