2010-04-13 96 views
1

我們目前正在開發一個Struts2項目。我們有一個模塊,我們通過jsp文件通過「屬性」Struts 2數據標記(即< s:property value =「aBeanProperty」/>)在一組bean上的只讀字段上顯示大量數據。在某些情況下,大部分字段可能會變空,因此屏幕上會顯示空白。擴展struts 2「屬性」數據標記

我們的客戶現在要求我們在屬性爲空時顯示默認字符串(即「N/A」),以便它顯示在當前顯示的空白位置。

我們正在尋找一種以乾淨和可維護的方式實現這一目標的方法。 'property'標籤帶有'default'屬性,當被訪問的屬性爲空時,可以在其中定義一個默認值。但是,我們的大多數屬性都是空字符串,因此在我們的情況下它不起作用。

我們正在考慮的另一個解決方案是爲我們所有的bean定義一個基類,並定義一個util方法,它將驗證字符串是空還是空,然後返回默認值。然後我們會從每個bean getter調用這個方法。是的,這將是厭煩和醜陋:),因此我們堅持在這一個情況下更好的解決方案。

現在,我們已經考慮了一種解決方案,我們認爲這是一種最好的解決方案,但如何實現它卻沒有運氣。我們計劃以某種方式擴展'property'標籤,定義一個新的'default'屬性,以便除了處理null屬性外,它還對空字符串(「」,「」等)執行此操作。因此,我們只需要用我們的新自定義標籤替換原來的s:property標籤,並且可以在不觸及java代碼的情況下實現所需的結果。

你有關於如何做到這一點的想法嗎?另外,任何其他聰明的解決方案(可能是某種設計模式?)如何默認大量屬性bean的值也是值得歡迎的!

(或者,甚至可能有一些標籤,這已經這樣做在Struts2 ??)

在此先感謝。


如果您不想閱讀以上所有內容,請使用較短的版本! :)

當前Struts2提供了一個屬性標記(< s:property value =「someValue」/>),它用於顯示值的內容,例如, Action類上的一個String變量。這個標籤包含一個名爲「default」的屬性,你可以在其中定義一個默認值來顯示,如果該變量設置爲NULL,例如您可以將其設置爲顯示這些值的「N/D」。

我們現在需要做同樣的事情,但它也適用於空字符串(「」,「」等),不僅在空值上。我們計劃擴展這個標籤,以便我們擁有自己的(也許類似於< s:propertyEmpty value =「someValue」/>)並完成此行爲。你能指導如何做到這一點?

非常感謝您的幫助。謝謝!

回答

0

有趣。我相信你在正確的軌道上。

只是我會嘗試擴展/修改屬性標籤,以便在jsp代碼中顯式設置新行爲。我的意思是,我不希望每個在Web應用程序中自動獲取新行爲,因爲可能有一些我想要的struts2行爲的bean屬性。 我寧願有一個新的標籤nane(例如:...或一個新的屬性(例如)

也許這有助於:http://bodez.wordpress.com/2009/03/13/customising-struts2-jsp-tags/