【问题标题】:JSP code not evaluated in custom tag call未在自定义标记调用中评估 JSP 代码
【发布时间】:2014-02-15 20:20:44
【问题描述】:

我是 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;);">

看起来&lt;%= .. %&gt; 标签正在被转义,因此在评估自定义标签之前不会评估 JSP 表达式...有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: jsp escaping jstl evaluation custom-tags


    【解决方案1】:

    作为一个肮脏的 hack(不亚于 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 %>" />
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2015-07-22
      • 2012-07-09
      • 2014-02-09
      • 1970-01-01
      相关资源
      最近更新 更多