2013-11-01 29 views
3

我正在阅读Charles Lyon的OCWCD <jsp:attribute>,我无法理解这部分内容。希望有人能帮助我。了解<jsp:attribute>语义

这去(从书中摘录):

方法1:

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

方法2:

<jsp:useBean id="bean_name"/> 

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

任何知道他想说什么?

+1

看起来很困惑,我在''标签内没有看到任何''。据我所知'''是用来设置'xml'标签属性的值,而不是任何'Bean'的属性。为了设置属性,使用''标签。 –

回答

10

的JavaServer Pages 2.3规范语句

•对于标准或自定义操作属性,接受请求时表达式值, Container必须评估操作的主体并将此评估的结果用作属性的值。在这种情况下,属性操作的主体可以是任何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> 


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

例如:

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

<jsp:getProperty name="bean1"> 
    <jsp:attribute name="property">${param.test}</jsp:attribute> 
</jsp:getProperty>