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”指定的對象,容器會拋出一個異常。