<jsp:setProperty>标记只能用来做一件事,那就是设置bean的性质。
但是,如果你想设置一个Map中的值呢?或者说想在Map中创建新的一项呢?或者只是希望创建一个新的请求作用域属性,该肿么办呢?
好吧,那就要用到c:set来帮忙了。
c:set有两种不同的设置:var和target。var版本用于设置属性变量,target版本用于设置bean性质或Map值。这两种版本都有两种形式,有体和没体,其实只是讲值放在不同位置的书写方式而已,不必纠结。下面首先介绍var版本,设置属性变量:
<!--设置属性的值,关键字set,var--> <html> <body> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <% pageContext.setAttribute("name","wang"); %> name: <%= pageContext.getAttribute("name") %><br> <!--设置该属性的值--> <c:set var="name" value="ning" /> after change: <c:out value="${name}" default="it‘s nothing" /><br> <!--设置的属性不存在,则创建该属性--> <c:set var="dog" scope="page" value="wangcai" /> dog: <c:out value="${dog}" default="it‘s nothing" /> </body> </html>
上面的代码已经很清晰了,所以就不多啰嗦了。因为上面用到的都是没体的形式,所以这里写一下有体的书写形式,做一下对比。
两种效果相同。
<!--有体--> <c:set var="dog" scope="page" value="wangcai" /> <!--没体--> <c:set var="dog" scope="page" > wangcai </c:set>
下面讲一下设置bean性质
<!--设置bean性质,关键字set,target--> <html> <body> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <% foo.person person = new foo.person(); %> <% pageContext.setAttribute("person",person);%> set bean<br> <c:set target="${person}" property="name" value="bigMan" /> personName: <c:out value="${person.name}" /><br> </body> </html>
person.java
package foo; public class person{ private String name; public void setName(String name){ this.name = name; } public String getName(){ return name; } }
ok,上面的代码都很简单。到此c:set的简单的用法就介绍完了。
时间: 2024-10-14 19:41:59