我今天遇到的问题是使用JSF在包含的JSP中处理HTML。 所以情况就是这样:我使用IBM的JSF 1.2在RAD和Websphere v6.1上使用自定义组件(来自公司层)来使用标签。 为了获得更清晰的代码,我只想在分离的JSP中分离每个选项卡的JSF代码,这样,main.jsp:
<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组件,但似乎在JSF生成的HTML之外,HTML之后处理HTML。像
这样的东西<table>
<!-- generated content -->
</table>
<div id="myDivId">
...
虽然表应该在div里面。我试图以不同的方式使用<f:verbatim>
标记,唯一的解决方案是通过逐字打开和关闭标记来围绕<div>
和</div>
,这很脏并使Websphere变得疯狂。< / p>
谷歌没有发现任何相关内容,那么你们有没有遇到同样的问题?是否有可能找到一个干净的解决方案,或者我是否必须在同一个JSP中包含我的所有代码?提前谢谢。
答案 0 :(得分:2)
首先,这可以被认为是传统的JSF 1.0 / 1.1行为。确实需要f:verbatim
将模板文本放入JSF组件树中。但是,f:verbatim
完全是多余的,因为2006的JSF 1.2的新视图处理程序会自动将f:view
内的任何模板文本带入组件树中。那么,你真的使用JSF 1.2吗? Websphere 6.1附带了内置的JSF 1.1库,升级到1.2并不像在/WEB-INF/lib
中放置库那么容易。
至于您的实际问题,您需要使用f:verbatim
包装仅模板文本,而不是有价值的JSF组件。因此,以下内容应该有效:
<f:verbatim>
<div id="myDivId">
<fieldset>
<legend>myLegend</legend>
</f:verbatim>
<h:outputText value="#{myBean.someContent}"></h:outputText>
<!-- HERE are a lot of JSF components, selectItems, inputText... -->
<f:verbatim>
</fieldset>
</div>
</f:verbatim>