当前位置: 代码迷 >> JavaScript >> JSTL中c:set标签的要端和技巧
  详细解决方案

JSTL中c:set标签的要端和技巧

热度:100   发布时间:2012-11-22 00:16:41.0
JSTL中c:set标签的要点和技巧

c:set标签有两种不同的设置:var和target。

var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值。

这两个版本都有两种形式:有体和没有体。有体的只是放入值的另一种途径。

★?var“版本”

  1. <c:set?var="userLevel"?scope="session"?value="Cowboy"/>??
  2. ??
  3. <c:set?var="fido"?value="${person.dog}"/>??
  4. ??
  5. <c:set?var="user"?scope="session">??
  6. ?? Sheriff, Bartender, Cowgirl???
  7. </c:set>??

如果“value”为null,“var”指定的属性将被删除!

如果“var”指定的属性不存在,则会创建一个属性,但仅当“value”不为null时才会创建新属性。

★?target“版本”

  1. <c:set?target="${petMap}"?property="dogName"?value="Clover"?scope="session"/>??
  2. ??
  3. <c:set?target="${person}"?property="name">??
  4. ?? ${foo.name}???
  5. </c:set>??

如果“target”是一个Map,“property”指定的是该Map的一个键;如果“target”是一个bean,“property”指定的是该bean的一个成员字段。

如果“target”表达式为null,容器会抛出一个异常。

如果“target”表达式不是一个Map或bean,容器会抛出一个异常。

如果“target”表达式是一个bean,但是这个bean没有与“property”匹配的成员字段,容器会抛出一个异常。

★?使用c:set标签的要点

不能同时有“var”和“target”属性。

“scope” 是可选的,如果没有使用这个属性,则默认为页面作用域。具体的,当没有使用这个属性时,容器会依次在页面作用域、请求作用域、会话作用域、应用作用域查 找,如果找不到“var”指定名字的作用域属性,容器就会在页面作用域新建一个属性;如果找不到“target”指定的对象,容器会抛出一个异常。