您好我在Scriptlet标记中声明用户代理,我无法在声明性标记中访问该用户代理我尝试了以下代码:
<%
String ua = request.getHeader( "User-Agent" );
boolean isSafari=(ua != null && ua.indexOf("Safari") != -1);
%>
我在声明标记中访问此isSafari
,如<%! if(isSafari){} %>
在这里,我可以获得浏览器的用户代理
但是当我在声明性标签中使用它时,它表示找不到变量isSafari
,请声明。
答案 0 :(得分:0)
首先,您根本不需要声明性标记。摆脱!
并确保在if语句的{}
中放置一些东西,它会正常工作。
<%
String ua = request.getHeader( "User-Agent" );
boolean isSafari=( ua != null && ua.indexOf( "Safari" ) != -1 );
%>
blah blah blah
<% if(isSafari){ %>
some html code here
<% } %>
or
<% if(isSafari)
{
out.print("some html code");
}
%>
其次,顾名思义,声明性标记的目的是声明事物,而不是使用它们。所以你可以做到这一点
<%!
String ua = null;
boolean isSafari = false;
%>
blah blah blah
<%
ua = request.getHeader( "User-Agent" );
isSafari = ( ua != null && ua.indexOf( "Safari" ) != -1 );
if(isSafari)
{
out.print("some html code");
}
%>
实际上,大多数情况下,声明性标签将用于声明函数。但是现在不建议在JSP中添加一堆代码(参见JSP info page),所以你真的不应该在JSP中定义函数。