<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。
举例来说,如果想要访问customer.address.street,只需要这样写:<c:out value="customer.address.street">。
<c:out>标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。
语法格式:
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
1、 value 要输出的信息
2、 default 默认情况下输出什么
3、 escapeXml 是否以xml格式输出注:默认为true,即像”<”,”>”这样的符号会原样输出
Demo
<c:out value="<要显示的数据对象(未使用转义字符)>" escapeXml="true" default="默认值"></c:out><br/>
<c:out value="<要显示的数据对象(使用转义字符)>" escapeXml="false" default="默认值"></c:out><br/>
<c:out value="${null}" escapeXml="false">使用的表达式结果为null,则输出该默认值</c:out><br/>
运行结果如下:
<要显示的数据对象(未使用转义字符)>
<要显示的数据对象(使用转义字符)>
使用的表达式结果为null,则输出该默认值
一般情况使用c:out和el表达式的效果是一样的,如: hello(使用标签):
hello(使用el表达式):${hello}
那一般什么时候会使用c:out标签呢?有两种情况:
(1)使用缺省值。有的时候某个东西没设值,但要输出缺省值,如果用el表达式什么都不输出,但可以使用c:out输出想要输出的缺省值;如下: hello(default="123"):
这样就输出了想要输出的123值。
(2)使用el表达式会对传过来的代码进行解析,而c:out标签输出时不会,因为它的默认值是这样设置的:escapeXml="true" 如果想要和el一样进行解析,则可以设置值为false即可。比如: welcome(default):
(这是默认的,即可以不写escapeXml="true" 和下面这个是一样的。) welcome(escapeXml="true"):
welcome(escapeXml="false"):
(这个设置为false后解析和el表达式是一样的)。