我正在为OCEWCD做准备。下面的代码出现在jsp页面中
<jsp:useBean id="acct1" class="aaa.bbb.Account"/>
<jsp:useBean id="acct2" class="aaa.bbb.Account " />
并且
<jsp:setProperty name="acct2" property="address" value="${acct1.address}" />
此代码试图将“acct1”对象的“address”属性复制到“acct2”对象的“地址”属性。
解释说,el表达式(value =&#34; $ {acct1.address}&#34;)带来了对acct1对象的地址属性的引用。
但我的理解是,它将带来acct1对象的地址属性的字符串表示(如-acct1.getAddress()。toString())。
因为如果以下代码出现在jsp页面中,
<%
Request.setAttribute(“A”, new A());
%>
${A}
输出可能类似于
org.apache.jsp.newjsp_jsp$1A@1bcdccc3。
解释一下。感谢
答案 0 :(得分:3)
只有在输出中打印对象时才会转换为String:
<% Request.setAttribute(“A”, new A()); %>
${A} <%-- A.toString() is called here --%>
在<jsp:setProperty name="acct2" property="address" value="${acct1.address}" />
中,没有任何内容打印到输出,因此不会发生字符串转换。实际上,这与acct2.setAddress(acct1.getAddress())