jQuery tmpl和JSP代码打得不好

art*_*ung 8 jquery jsp el jquery-templates

我一直在为一些项目使用jQuery tmpl库,并且非常喜欢它.

我没有在一个需要在JSP中的小项目中使用它,而且事情变得奇怪了.它没有完全发挥作用.

<script id="servicesRow" type="text/x-jquery-tmpl">
    <tr id="id_${id}">
        <td>${name2}<br />${id}</td>
        <td>${supported_roles}</td>
        <td><button class="edit">Edit</button></td>
        <td><button class="delete">Delete</button></td>
        <td><a href="#">Show clients</a></td>
    </tr>
</script>
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么没有数据显示出来.事实证明,页面中的文本正在发生某种解析${foo}.因此,当我在我的页面上查看源代码时,所有这些元素都已被替换,如下所示:

<script id="servicesRow" type="text/x-jquery-tmpl">
    <tr id="id_">
        <td><br /></td>
        <td></td>
        <td><button class="edit">Edit</button></td>
        <td><button class="delete">Delete</button></td>
        <td><a href="#">Show clients</a></td>
    </tr>
</script>
Run Code Online (Sandbox Code Playgroud)

哪个仍可用作模板,但jQuery tmpl无法完成其工作.我得到很多空行.

语法与我为JSTL找到的一些文档相匹配.但我没有,我可以说,安装了.我正在开发库存,Windows 7上的当前Tomcat以及从头开始在我的webapps /文件夹中构建应用程序.我没有,我可以说,启用了这样的任何东西,我很惊讶裸机${}被解析(而不是更喜欢的东西<%= %>,从PHP或ASP和类似的东西会更常见).

所以我的问题是:如何关闭我的jQuery tmpl模板的解析行为?在全球范围内,本地到单个JSP,或逃避它(我已经尝试了额外的括号,我尝试过反斜杠,我尝试了各种引号).我认为理想情况会有类似的东西:

<foo:stopParsingMyDollarSignsAndBracesPlease>
<script id="servicesRow" type="text/x-jquery-tmpl">
    <tr id="id_${id}">
        <td>${name2}<br />${id}</td>
        <td>${supported_roles}</td>
        <td><button class="edit">Edit</button></td>
        <td><button class="delete">Delete</button></td>
        <td><a href="#">Show clients</a></td>
    </tr>
</script>
</foo:stopParsingMyDollarSignsAndBracesPlease>
Run Code Online (Sandbox Code Playgroud)

任何帮助或想法都表示赞赏.谢谢!

Bal*_*usC 14

${}符号是表达语言.你可以在每个JSP的基础上关闭它

<%@page isELIgnored="true" %>
Run Code Online (Sandbox Code Playgroud)

或者在整个应用程序的基础上,通过以下方式web.xml:

<jsp-config>
    <el-ignored>true</el-ignored>
</jsp-config>
Run Code Online (Sandbox Code Playgroud)

或者如果你真的想在JSP中的其他地方使用EL,那么你只需要在jQuery模板中转义那些\.你真的想避免使用老式的scriptlet.

<tr id="id_\${id}">
Run Code Online (Sandbox Code Playgroud)

或者您可以将所有JS代码放在自己的JS文件中(如果jQuery tmpl支持).


小智 6

使用{{= variable_name}},而不是${variable_name}在jQuery的模板.

https://github.com/jquery/jquery-tmpl/issues/56


小智 6

关闭EL是不可取的,当jsp页面有其他el时,你如何处理它,你可以这样做:

<script id="servicesRow" type="text/x-jquery-tmpl">
<tr id="id_{{= id}}">
    <td>{{= name2}}<br />${id}</td>
    <td>{{= otherInfo}}</td>
    <td><button class="edit">Edit</button></td>
    <td><button class="delete">Delete</button></td>
    <td><a href="#">Show clients</a></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

注意:El有一个空间,