代码之家  ›  专栏  ›  技术社区  ›  Baztoune Uchenna

在JSF子视图中混合HTML和JSF

  •  0
  • Baztoune Uchenna  · 技术社区  · 15 年前

    今天的问题是如何处理包含在JSP中的HTML,以及JSF。 这里的情况是:我在RAD上使用IBM的JSF1.2和WebSphereV6.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组件是被处理的,但是HTML似乎是在JSF生成的HTML之后和之后被处理的,并且出现在之后。类似的东西

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

    虽然桌子应该在分区内,但我尝试使用 <f:verbatim> 标记不同的方式,唯一的解决方案是 <div> </div> 通过逐字打开和关闭标签,这是肮脏的,使WebSphere变得疯狂。

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

    1 回复  |  直到 15 年前
        1
  •  2
  •   BalusC    15 年前

    首先,这被认为是遗留的JSF1.0/1.1行为。这个 f:verbatim 确实需要将模板文本放入JSF组件树中。然而, F:逐字逐句 是完全多余的,因为2006年的JSF1.2的新视图处理程序会自动在其中获取任何模板文本 f:view 到组件树中。因此,你是 真正地 使用JSF 1.2?与内置JSF1.1库一起提供的WebSphere6.1和升级到1.2并不像将libs放在 /WEB-INF/lib .

    至于你的实际问题,你需要包装 只有 模板文本 F:逐字逐句 ,而不是非常有用的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>