【问题标题】:Understanding <jsp:attribute> semantics理解 <jsp:attribute> 语义
【发布时间】:2013-11-12 16:49:34
【问题描述】:

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

在这里(摘自本书):

方法一:

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

方法二:

<jsp:useBean id="bean_name"/> 

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

知道他想说什么吗?

【问题讨论】:

  • 对我来说看起来很混乱,我没有在&lt;jsp: useBean&gt; 标签中看到任何&lt;jsp:attribute&gt;&lt;/jsp:attribute&gt;。据我所知&lt;jsp:attribute&gt; 用于设置xml 标签的属性值,而不是任何Bean 的属性。为了设置属性,使用了&lt;jsp: setProperty&gt; 标签。

标签: java jsp jakarta-ee java-ee-6


【解决方案1】:

JavaServer Pages 2.3 规范声明

• 对于接受请求时表达式值的标准或自定义操作属性, Container 必须评估动作的主体,并将评估的结果用作属性的值。在这种情况下,属性动作的主体可以是任何 JSP 内容。如果属性的类型不是字符串,则根据第 JSP.1.14.2.1 节“字符串值的转换”应用标准类型转换规则。

示例:

&lt;jsp:element&gt; 的属性接受请求时间表达式值,因此以下示例将评估操作的主体。

<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>


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

示例:

&lt;jsp:getProperty&gt;property 属性不接受请求时间表达式值。所以下面的例子会得到翻译错误

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

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多