2010-04-19 43 views
2

全部, 我正在研究我們在Resin Web應用程序服務器中部署的java webapp。我一直在爲應用程序的新部分做一些XML解析,並意識到我們的應用程序正在使用Resin classes來進行解析。我想從脫身,並使用一些更標準一些原因,所以我把我的樹脂配置文件,這些系統屬性(並添加了Xerces罐子到我的類路徑):現在將XML解析器更改爲Xerces時出現JSP編譯錯誤

<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/> 

<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/> 

而且,我在幾個頁面上收到了JSP編譯錯誤(我猜Resin內置的解析器比較寬鬆)。錯誤讀取:

org.xml.sax.SAXParseException: The value of attribute "title" associated with an element type "display:column" must not contain the '<' character. 

而且,「顯示:列」在一些網頁上的標籤確實包含在「標題」屬性標記。這裏有一個例子:

<display:column scope='col' class=" appealColorBG selectAllWidth" 
    title="<span class='centerThis'><label for='selectAll'>Select All</label><br /> 
      <input type='checkbox' name='selectAll' 
      id='selectAll' 
      onClick='selectAllCheckboxes();'/></span> " > 

這是一些醜陋的JSP代碼,我知道,但它也代碼中已有的生產,所以我猶豫去改變它。

有誰知道一種方法,我可以設置xerces,以便它將允許JSP按原樣編譯?

+1

如果Resin默認工作,並且更改的設置沒有,那麼爲什麼更改它們? – skaffman 2010-04-19 18:18:00

+0

Resin默認適用於JSP編譯,但我試圖解決另一個解析問題,並且我想使用Xerces,而不是構建樹脂類,這不是標準。 JSP編譯問題引起了我的不安。如果我找不到能夠讓JSP編譯的解決方案,那麼我將不得不改回來,就像你說的那樣。 – elduff 2010-04-20 14:30:55

回答

1

這絕對是醜陋的JSP代碼。

如果您使用的是XML解析器,則會出現問題。正如Xerces告訴你的,有效XML中的屬性值不能包含'<'字符。

您可以告訴Xerces接受這個問題值得懷疑,但修正XML會比談論XML解析器接受錯誤的XML更好。

您可能想要退回到使用Resin類,直到您可以提供Xerces正確的XML,或將Resin配置爲不使用XML解析器作爲其JSP編譯的一部分 - 請參閱註釋。

+0

是的,Resin似乎在編譯之前通過解析器運行JSP - 也許這是標準的,但我沒有意識到它。正如你所說,這可能是不可能的,但這就是我想問的:)對於我來說,改變JSP並不是一種選擇,因爲這是一個相當大的現有代碼庫,所以我可能不得不使用Resin類。 – elduff 2010-04-20 14:36:08

+0

剛剛通過Resin docs檢索了一下,我懷疑你可以告訴Resin不要將JSP視爲XML。看看http://www.caucho.com/resin-3.0/config/webapp.xtp#jsp提示。它看起來應該是默認的。 – 2010-04-20 15:39:44

+0

感謝您使用jsp config標籤鏈接到樹脂文檔 - 我確實玩過了這些,但仍然一直在收到JSP編譯錯誤。看起來我現在不得不回到樹脂解析器。謝謝您的幫助! – elduff 2010-04-21 14:40:32

相關問題