JSTL之c:set


<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的簡單的用法就介紹完了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM