0

我今天遇到的问题是关于使用 JSF 在包含的 JSP 中处理 HTML。所以情况如下:我在 RAD 上使用 IBM 的 JSF 1.2 和 Websphere v6.1 我有一个自定义组件(来自公司层)来使用选项卡。为了有一个更干净的代码,我只想将每个选项卡的 JSF 代码分隔在一个单独的 JSP 中,这样 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 组件,但 HTML 似乎在 JSF 生成的 HTML 之外被处理并出现在之后。就像是

<table>
    <!-- generated content -->
</table>
<div id="myDivId">
...

虽然表格应该在 div 里面。我尝试以<f:verbatim>不同的方式使用标签,唯一的解决方案是用逐字的开始和结束标签来包围<div></div>,这很脏,让 Websphere 变得疯狂。

谷歌没有找到任何相关的东西,所以你们已经遇到过同样的问题吗?是否有可能找到一个干净的解决方案,或者我是否必须将我的所有代码都包含在同一个 JSP 中?提前致谢。

4

1 回答 1

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.

至于您的实际问题,您只需要用不值得的 JSF 组件包装模板f:verbatim文本。因此,以下应该有效:

<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>
于 2010-01-07T14:12:23.257 回答