2014-01-24 35 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 %>" /> 

這似乎已經解決了這個問題,雖然這將是很好理解爲什麼/發生了什麼