我今天遇到的問題是關於使用JSF處理包含的JSP中的HTML。 因此,情況如下:我使用Websphere v6.1的RAD上的IBM的JSF 1.2我有一個自定義組件(來自公司層)使用選項卡。 而爲了有一個更乾淨的代碼,我只是想在一個分離的JSP,這樣每個標籤的JSF代碼中分離出來,main.jsp中:在JSF子視圖中混合使用HTML和JSF
<customTag:tabComponent>
<jsp:include page="/jsp/workflow/tab1.jsp"></jsp:include>
<div align="right">
<customTag:switchToTab title="Next" tabValue="2"></customTag:switchToTab>
</div>
</customTag:tabComponent>
而且我tab1.jsp:
<!-- Taglibs declared here -->
<f:verbatim>
<div id="myDivId">
<fieldset>
<legend>myLegend</legend>
<h:outputText value="#{myBean.someContent}"></h:outputText>
<!-- HERE are a lot of JSF components, selectItems, inputText... -->
</fieldset>
</div>
</f:verbatim>
因此,JSF組件被處理,但是HTML似乎在JSF生成的HTML之外處理之後出現。類似於
<table>
<!-- generated content -->
</table>
<div id="myDivId">
...
雖然表格應該在div內。我試着用不同的方式使用<f:verbatim>
標籤,唯一的解決方案是用逐字打開和關閉標籤圍繞<div>
和</div>
,這是骯髒的,並且使Websphere變得瘋狂。
谷歌沒有找到任何相關的,所以你們是否已經遇到同樣的問題?是否有可能找到一個乾淨的解決方案,還是必須將我所有的代碼包含在同一個JSP中?提前致謝。
再次感謝您的時間。 也許這很愚蠢,但是,我怎麼知道JSF版本?我認爲它是1.2,但你應該是對的,因爲公司發佈了整個環境,我沒有改變任何東西,所以我仍然猜測它仍然是JSF 1.1。 關於您的解決方案:我已經嘗試過了,並且在您回答後再次執行了此操作,並且這是第一次啓動Websphere,但在「重新發布」之後,我得到了「重新發布失敗」(不確定確切翻譯,法語RAD環境),因爲
如果您使用的是JSF 1.2,您會在啓動日誌中看到(在1.1中缺少這一點)。此外,您可以使用僅限於1.2的類,如'ValueExpression'或僅限於1.2的方法(如Application#evaluateExpressionGet()),或僅使用1.2的標籤,如'f:setPropertyActionListener'和'h: panelGroup layout =「block」'。至於發佈後的「重新發布失敗」錯誤,我會懷疑髒的類路徑。確保整個類路徑中的庫中沒有版本衝突(不幸的是,Websphere中有很多路徑,我可以從經驗中得知)。 – BalusC 2010-01-07 14:46:22
我在類路徑中找不到任何奇怪的東西,但是我發現的解決方案是「在應用程序包含錯誤時啓用發佈」,因此它在發佈期間不會抱怨「交叉標籤」。輸出仍然是正確的,所以沒關係(如果我找到更多的東西,我會在稍後發佈,以供其他人使用)。謝謝。 – Baztoune 2010-01-07 15:32:24