JSP - 表达式语言

时间:2014-09-11 06:39:37

标签: java jsp servlets el

我正在为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。

解释一下。感谢

1 个答案:

答案 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())

相同