如何做一个String包含检入EL

时间:2013-01-26 04:27:20

标签: java jsp struts el

应用程序是使用Struts 1.2框架完成的。我想在jsp文件中获取请求标头主机名,并标识从标头中读取user-agent值的浏览器。

以下是我使用scriptlet编写的代码:

String userAgent = request.getHeader("user-Agent");
if(userAgent.contains("Chrome")){
    userAgent = "Chrome";
}else if(userAgent.contains("Android")){
    userAgent = "Android";
}

代码工作正常。但我想避免使用scriptlet,因为它有一些易受攻击的跨站点脚本问题。因此,为了在EL中做同样的事情,我可以使用这个来获取标题:

Host is: ${header["user-agent"]}

但我不知道如何在EL中进行contains检查。

这个应用程序在Struts 1.2 Framework上运行,如果框架提供了一些更好的方法来读取JSP中的头值,那么请让我知道它。 EL也没关系。

1 个答案:

答案 0 :(得分:1)

您需要使用fn:containsfn:containsIgnoreCase

<c:set var="userAgent" value="${header['user-agent']}"/>

然后:

 <c:if test="${fn:containsIgnoreCase(userAgent, 'Chrome')}">
  <!-- TODO: -->
 </c:if/>