我正在为 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”对象的“address”属性。
解释说,el表达式(value="${acct1.address}")带来了对acct1对象的address属性的引用。
但我的理解是,它将带来 acct1 对象的地址属性的字符串表示形式(如 acct1.getAddress().toString() )。
因为如果下面的代码出现在jsp页面中,
<%
Request.setAttribute(“A”, new A());
%>
${A}
输出可能类似于
org.apache.jsp.newjsp_jsp$1A@1bcdccc3.
解释一下。谢谢
最佳答案
仅当对象在输出中打印时才会转换为字符串:
<% Request.setAttribute(“A”, new A()); %>
${A} <%-- A.toString() is called here --%>
在 <jsp:setProperty name="acct2" property="address" value="${acct1.address}" />
没有任何内容打印到输出中,因此不会发生字符串转换。实际上,这与 acct2.setAddress(acct1.getAddress())
相同。
关于java - JSP——表达式语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25780733/