2014-01-24 4 views
0

Я новичок в JSP и JSTL и меня вопрос, где код в <%= .. %> блоке не оцениваемый, когда он образует только части атрибута пользовательских теговJSP-код не обрабатывается в пользовательских тегах вызова

<myForm:text myBean="${myBean}" inputClass="form-class" inputName="pageNumber" 
    label="Go to page" size="1" 
    onkeypress="javascript:checkKey(<%= formName %>, '<%=listRequestFor%>', <%=recPerPage%>, <%=numPages%>);" 
    onkeydown="javascript:numbersOnly();" 
    onchange="javascript:goToPage(<%=formName%>, '<%=listRequestFor%>', <%=recPerPage%>, <%=numPages%>);" /> 

и это производит HTML-то вроде следующего:

<label for="" class=""> 
    Go to page 
</label> 

<input type="text" id="" class="form-control" name="pageNumber" 
    value="" size="1"  
    onkeypress="javascript:checkKey(&lt;%= formName %&gt;, '&lt;%=listRequestFor%&gt;', &lt;%=recPerPage%&gt;, &lt;%=numPages%&gt;);" 
    onkeydown="javascript:numbersOnly();" 
    onchange="javascript:goToPage(&lt;%=formName%&gt;, '&lt;%=listRequestFor%&gt;', &lt;%=recPerPage%&gt;, &lt;%=numPages%&gt;);"> 

похоже, что <%= .. %> теги быть спасся и поэтому выражение JSP не обрабатывается до пользовательских тегов оценивается ... любые идеи, как т o обойти это?

ответ

1

В грязного хака (не менее, чем JSP не заслуживает) я определил переменные, которые могут быть оценены перед передачей пользовательского тега:

<% 
String onkeypress = "javascript:checkKey("+formName+", '"+listRequestFor+"', "+recPerPage+", "+numPages+");"; 
String onchange = "javascript:goToPage("+formName+", '"+listRequestFor+"', "+recPerPage+", "+numPages+");"; 
%> 

<myForm:text myBean="${myBean}" inputClass="form-class" inputName="pageNumber" 
    label="Go to page" size="1" 
    onkeypress="<%= onkeypress %>" 
    onkeydown="javascript:numbersOnly();" 
    onchange="<%= onchange %>" /> 

Это, кажется, решен вопрос хотя бы приятно понимать, почему/что происходит