2008-11-25 22 views
0

我碰到下面的標記來在JSP文件中的遺留應用程序我維護:Struts邏輯的name屬性中允許有空格:等於標記嗎?

<logic:equal name="welcome memberInfoView" property="hasFoo" value="false"> 

那名屬性看起來非常錯誤的我。根據我在Struts文檔中讀到的內容,該空間是不允許的。

這是合法的嗎?如果是這樣,它會做什麼?如果不是,意圖是什麼?

編輯:經過一些更多的搜索後,我發現「歡迎memberInfoView」確實是故意用作屬性名稱(與空間)。

回答

2

其實,這個名字是合法的,但非常規。儘管從法律上來說,它確實可能是一個錯誤。

「name」在某個作用域(由可選的「scope」屬性確定,默認爲「any」)中指定屬性名稱,而不是腳本變量名稱。由於它實際上是地圖中的關鍵字,因此它可以是任何字符串。

此標記將從頁面上下文開始,並查找名爲「welcome memberInfoView」的屬性。它將繼續封裝範圍,直到找到指定的對象。然後它會查看該對象的「hasFoo」屬性。如果它是「假」,封裝的片段將被調用。

看起來錯誤的另一件事是屬性「hasFoo」。通常情況下,該屬性只是「富」,對象應該有一個名爲isFoo()getFoo()的訪問器。也許邏輯標籤在這方面是寬鬆的,並且會成功調用hasFoo()方法。

您可能會爲此用法創建一個簡單測試,並確保它按照您的意圖工作。