JSTL中c:set標簽的要點和技巧


c:set標簽有兩種不同的設置:var和target。

var“版本”用於設置作用域屬性,target“版本”用於設置bean屬性或Map值。

這兩個版本都有兩種形式:有體和沒有體。有體的只是放入值的另一種途徑。

★ var“版本”

    <c:set var="userLevel" scope="session" value="Cowboy"/>  
      
    <c:set var="fido" value="${person.dog}"/>  
      
    <c:set var="user" scope="session">  
       Sheriff, Bartender, Cowgirl   
    </c:set>  

如果“value”為null,“var”指定的屬性將被刪除!

如果“var”指定的屬性不存在,則會創建一個屬性,但僅當“value”不為null時才會創建新屬性。

★ target“版本”

    <c:set target="${petMap}" property="dogName" value="Clover" scope="session"/>  
      
    <c:set target="${person}" property="name">  
       ${foo.name}   
    </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”指定的對象,容器會拋出一個異常。

 


免責聲明!

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



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