我正在<jsp:attribute>
阅读Charles Lyon的OCWCD,我无法理解这一部分。如果有人能帮助我,我将不胜感激。
这里(摘自书中):
方法1:
<jsp:useBean>
<jsp:attribute name="id">bean_name<jsp:attribute>
<jsp:useBean>
方法2:
<jsp:useBean id="bean_name"/>
“两种方法的语义相同,因为如果一个属性期望请求时间表达式的结果,那么容器将评估
<jsp:attribute>
动作的内容;否则如果身体内容为<jsp:attribute>
是请求时间表达式,将抛出转换异常。“
知道他想说什么吗?
答案 0 :(得分:11)
JavaServer Pages 2.3规范声明
•对于接受请求时表达式值的标准或自定义操作属性, Container必须评估操作的主体,并使用此评估的结果作为属性的值。在这种情况下,属性操作的主体可以是任何JSP内容。如果属性的类型不是String,则应用标准类型转换规则,根据章节JSP.1.14.2.1,“从字符串值转换”。
示例:
<jsp:element>
接受请求时表达式值的属性,因此以下示例将评估操作的主体。
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">${param.test}</jsp:attribute>
</jsp:element>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr"><%=request.getParameter("test")%></jsp:attribute>
</jsp:element>
•对于不接受请求时表达式值的标准或自定义操作属性,Container必须使用操作的主体作为属性的值。如果操作的主体包含除模板文本之外的任何内容,则必须导致转换错误。
示例:
property
的{{1}}属性不接受请求时表达式值。因此,以下示例将获得翻译错误。
<jsp:getProperty>