3

我正在阅读 Charles Lyon 的 OCWCD,<jsp:attribute>但我无法理解这部分内容。如果有人可以帮助我,将不胜感激。

在这里(摘自本书):

方法一:

<jsp:useBean>  
<jsp:attribute name="id">bean_name<jsp:attribute>
<jsp:useBean>    

方法二:

<jsp:useBean id="bean_name"/> 

“这两种方法的语义是相同的,如果一个属性期待请求时间表达式的结果,那么容器将评估<jsp:attribute>动作的内容;否则,如果主体内容<jsp:attribute>是请求时间表达式,则翻译将抛出异常。”

知道他想说什么吗?

4

1 回答 1

11

JavaServer Pages 2.3 规范声明

• 对于接受请求时间表达式值的标准或自定义操作属性,容器必须评估操作的主体并将此评估的结果用作属性的值。在这种情况下,属性动作的主体可以是任何 JSP 内容。如果属性的类型不是字符串,则按照第 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>


• 对于不接受请求时间表达式值的标准或自定义操作属性,容器必须使用操作主体作为属性值。如果操作的主体包含模板文本以外的任何内容,则必须导致翻译错误。

例子:

property属性<jsp:getProperty>不接受请求时间表达式值。所以下面的例子会出现翻译错误

<jsp:getProperty name="bean1">
    <jsp:attribute name="property">${param.test}</jsp:attribute>
</jsp:getProperty>
于 2013-11-07T23:05:36.377 回答