2012-05-16 59 views
5

我有標籤的一些舊的JSP文件如JSP標籤屬性不能設置多次?

<mytag:editbox name="SEL_1" param="onclick='clickit();" param="size='4'" />.

這些JSP運行得很好了WebSphere 5.0。當我將它移入Websphere 8.0時,出現了一些錯誤。由JSP編譯的java源代碼如下:

editbox.setName("SEL_1"); 
editbox.setParam("size='4'"); //replaced by the last one 
editbox.setParam("size='4'"); 

最後的[attributes]會覆蓋它之前的那些。我也在Websphere 6.0和Tomcat中測試JSP。 WAS6與8.0相同,Tomcat說:

org.apache.jasper.JasperException: /index.jsp (line: 17, column: 20) Attribute qualified names must be unique within an element 

標記的屬性不能設置多次。

這是JSP 2.0+規範的要求? (我認爲WAS5.0中的JSP容器是JSP 1.2)。

我可以將兩個param屬性合併爲一個來糾正問題,但是如何在不更改JSP源代碼的情況下獲得正確的結果?

回答

5

有具有相同名稱的多個屬性是從未由JSP規範的支持。如果它在Websphere 5上運行,那麼這將取決於該服務器版本允許的專有行爲,而不是任何其他方法。我認爲標籤類可以將值添加到集合中,或者其他類似的東西。

你需要,無論是通過使用分隔的字符串,或使用嵌套的標籤重構的標籤是符合規範。

3

JSP標籤是XML元素。而一個XML元素不能有多個具有相同名稱的屬性。恕我直言,你的代碼發生意外在以前版本的Websphere只工作,可能是由於JSP標籤的馬虎驗證和解釋。

0

具有相同的行爲與爲8,你可以在您的應用程序部署描述符(ibm-ext-web.xmi)這個JSP屬性:

allowMultipleAttributeValues設置爲true

或者com.ibm.wsspi.jsp.allowMultipleAttributeValues設置Web容器定製屬性true

來源:http://www-01.ibm.com/support/docview.wss?uid=swg1PM65454

0

我有同樣的問題。我同時在顯示標籤庫標籤中使用struts標籤,所以我遇到了這個問題。一旦我選擇一個使用錯誤消失。使用來自兩個不同庫的相同標籤會導致不明確。