我们在JSTL标签中看到“<body-content>JSP</body-content>”这种类型的定义,但是不知道它是什么意思,其实它的意思就是定义了一个JSTL标签内部是否允许使用JSP表达式,先来了解什么是JSTL标签体,请看代码:
<c:if test="xxxx"> //中间即为JSTL标签体 </c:if>
再来看看什么是jsp表达式,jsp表达式即是一个jsp页面书写java代码的代码块,格式例如:
<% //写java代码 %>
那么<body-content>可以有几种定义呢?一共有四种JSTL标签体格式定义,分别是:
JSP:表示标签体内容可以使用和输出jsp表达式内容。
scriptless:表示标签体内部不允许书写jsp表达式。
empty:表示JSTL标签体必须为空,例如下面这种JSTL表达式则是一个空的JSTL标签体:
<c:remove var="username"/>
因为内部是这样定义的<body-content>empty</body-content>。
tagdependent:表示标签体内容支持jsp表达式,但是会把jsp表达式当做String字符串输出,不会输出jsp表达式本应该输出的内容。
扩展知识:
我们在JSTL标签内部会属性定义中会看到类似这样的代码:
<attribute> <name>name</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> |
rtexprvalue 为true表示name属性可以使用EL表达式,例如 name="${username}”。
rtexprvalue 为false表示name属性只能使用字符串常量,而不能使用EL表达式的形式,例如var="student”。