2013-11-01 69 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>