<jsp:setProperty>动作用于设置JavaBean对象的属性。此动作标签底层是通过调用JavaBean对象的set方法给属性赋值。所以要想使用此动作给JavaBean对象的属性赋值,JavaBean类中必须提供set方法。
<jsp:setProperty>有三种使用方法
格式一:通过value属性,使用常量或表达式给JavaBean属性赋值
<jsp:setProperty name="JavaBean对象名" property="实例对象属性名" value="{String 或者 <%= expression%>}"/> 当value的值是字符串,该值会自动转换成JavaBean属性相应的类型。 当value的值是表达式,,那么表达式的计算结果必须与所要设置的JavaBean属性的类型一致
格式二:通过param属性,使用指定的参数值给JavaBean属性值赋值。
<jsp:setProerty name="JavaBean对象名" property="JavaBean属性名" param="参数"/> param属性用于将JavaBean对象实例对象的某个属性值设置为一个请求参数值, 该属性值同样会自动转换成要设置的JavaBean属性的类型。例如表单元素参数。
格式三:通过通配符*,使用同名表单元素的值给JavaBean的属性赋值
<jsp:setProperty name="JavaBean对象名" property="*" />
格式一实例
<body>
<!--查找或创建book1对象-->
<jsp:useBean id="book1" class="com.xxx.Book"/>
<!--查找或创建book2对象-->
<jsp:useBean id="book2" class="com.xxx.Book" scope="session"/>
<!-- 使用<jsp:setProperty>动作给属性赋值-->
<jsp:setProperty property="No" name="book1" value="4253625"/>
<jsp:setProperty property="Name" name="book1" value="java语言"/>
<jsp:setProperty property="No" name="book2" value="4253625"/>
<jsp:setProperty property="Name" name="book2" value="java语言"/>
<!--获取并显示书籍属性信息-->
book1 ISBN:<jsp:getProperty property="No" name="book1" />
书名:<jsp:getprpperty property="Name" name="book1" />
book2 ISBN:<jsp:getProperty property="No" name="book2" />
书名:<jsp:getprpperty property="Name" name="book2" />
</body>
格式二实例
<!--index.jsp-->
<body>
<form action="displaybook.jsp">
<ul type="none">
<li>ISBN:<input type="text" name="No"/></li>
<li>ISBN:<input type="text" name="Name"/></li>
<li>是否售出:
<input type="radio" name="Status" value="true"/>是
<input type="radio" name="Status" value="false"/>否
</li>
<li>
<input type="submit" value="提交"/>
<input type="reset" value="取消"/>
</li>
</ul>
</form>
</body>
<!--displaybook.jsp-->
<body>
<!--利用useBean动作实例化对象book-->
<jsp:useBean id="book" class="com.xxx.Book" scope="session"/>
<!-- 使用<jsp:setProperty>动作给属性赋值-->
<jsp:setProperty property="No" name="book" param="No"/>
<jsp:setProperty property="Name" name="book" param="Name"/>
<jsp:setProperty property="Status" name="book" param="Status"/>
ISBN:<jsp:getProperty property="No" name="book" />
书名:<jsp:getprpperty property="Name" name="book" />
是否售出:<jsp:getProperty property="Status" name="book"/>
</body>
格式三实例
<!--index.jsp-->
<!--与格式二的区别:表单每一个元素的名称(name属性)和Book.java类的属性名称要保持一致,
否则无法自动赋值-->
<body>
<form action="displaybook.jsp">
<ul type="none">
<li>ISBN:<input type="text" name="No"/></li>
<li>ISBN:<input type="text" name="Name"/></li>
<li>是否售出:
<input type="radio" name="Status" value="true"/>是
<input type="radio" name="Status" value="false"/>否
</li>
<li>
<input type="submit" value="提交"/>
<input type="reset" value="取消"/>
</li>
</ul>
</form>
</body>
<!--displaybook.jsp-->
<body>
<!--利用useBean动作实例化对象book-->
<jsp:useBean id="book" class="com.xxx.Book" scope="session"/>
<!--表单元素的值自动给同名的book属性赋值-->
<jsp:setProperty property="*" name="book"/>
ISBN:<jsp:getProperty property="No" name="book" />
书名:<jsp:getprpperty property="Name" name="book" />
是否售出:<jsp:getProperty property="Status" name="book"/>
</body>