我是JSP和JSTL的新手,并且遇到一个问题,即当<%= .. %>
块中的代码仅形成自定义标记属性的 part 时,其中的代码未被评估
<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(<%= formName %>, '<%=listRequestFor%>', <%=recPerPage%>, <%=numPages%>);"
onkeydown="javascript:numbersOnly();"
onchange="javascript:goToPage(<%=formName%>, '<%=listRequestFor%>', <%=recPerPage%>, <%=numPages%>);">
看起来<%= .. %>
标签正在被转义,因此在评估自定义标签之前不评估JSP表达式......任何想法如何解决这个问题?
答案 0 :(得分: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 %>" />
这似乎已经解决了这个问题,虽然理解为什么/正在发生什么会很好