Переменный доступ из тега Scriptlet к тегу объявления в JSP

Привет, я объявляю пользовательский агент в теге Scriptlet, и я не могу получить доступ к этому пользовательскому агенту в декларативном теге. Я пробовал следующий код:

<%
    String ua = request.getHeader( "User-Agent" );
    boolean isSafari=(ua != null && ua.indexOf("Safari") != -1);
%>

Я получаю доступ к этому isSafari в декларативном теге, таком как this<%! if(isSafari){} %>

Здесь я могу получить пользовательский агент браузера, но когда я использую его в декларативном теге, он говорит, что переменная isSafari не найдена, пожалуйста, объявите.


person SNK    schedule 07.05.2014    source источник
comment
‹%String ua = request.getHeader(User-Agent); boolean isSafari=( ua != null && ua.indexOf( Safari ) != -1 );%› Я получаю доступ к этому isSafari в декларативном теге, подобном этому‹%! if(isSafari){} %› его говорящая переменная isSafari не объявлена   -  person SNK    schedule 07.05.2014


Ответы (1)


Во-первых, вам вообще не нужен декларативный тег. Избавьтесь от ! и обязательно поместите что-нибудь в {} оператора 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), поэтому вам действительно не следует определять функции в ваших JSP.

person developerwjk    schedule 07.05.2014