gpt4 book ai didi

jsp - 指定 JSTL value via attribute and body 之间的区别

转载 作者:行者123 更新时间:2023-12-02 04:14:54 24 4
gpt4 key购买 nike

我试图弄清楚 JSTL 的这两种用途之间是否存在功能差异 <c:set>标签。假设我已通过以下方式将一些字符串常量导入到 JSP 页面中:

<%@ page import="some.package.of.AppConstants"%>

那么,考虑到上面的导入指令,这两个示例之间有什么区别:

  1. 指定 value 中的值属性:

    <c:set var="SOME_VAR" value="${AppConstants.SOME_CONSTANT}" />
  2. 指定标签正文中的值:

    <c:set var="SOME_VAR">
    <%=AppConstants.SOME_CONSTANT%>
    </c:set>

${SOME_VAR}的值有什么不同吗?将在第二个示例与第一个示例中? AppConstants.SOME_CONSTANT 中是否存在任何特殊字符影响 ${SOME_VAR} 的值在这两种情况下?

最佳答案

Difference between jstl c:set value in attribute and body of tag

存在技术差异。

value 保留原始值类型。例如,如果您提供了 Integer 或其他内容,它将保留 Integer。然而,主体基本上对值执行toString(),因此本质上将任何类型转换为String。这在某些情况下可能是有益的,例如:


回到具体的功能需求,第一个示例仅在您的目标是 Servlet 3.1/EL 3.0 容器(Tomcat 8 等)以及 web.xml 匹配的 Web 应用程序时才有效Servlet 3.1。

<c:set var="SOME_VAR" value="${AppConstants.SOME_CONSTANT}" />

即,仅从 EL 3.0 开始支持此功能。这绝对是优于 Scriptlet 方式的首选方法。您应该不惜一切代价尝试避免 Scriptlet。您只需记住该代码不向后兼容旧版本的目标运行时。

另请参阅:

关于jsp - 指定 JSTL <c :set> value via attribute and body 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com