0

我是 JSP 和 JSTL 的新手,遇到一个问题,即当块中的代码仅构成自定义标记属性的一部分<%= .. %>时,它没有被评估

<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 表达式......有什么想法可以解决这个问题吗?

4

1 回答 1

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 %>" />

这似乎已经解决了这个问题,尽管很高兴了解为什么/发生了什么

于 2014-01-27T17:11:21.780 回答