将JSF与纯HTML混合时有什么问题吗?

时间:2010-05-16 18:03:27

标签: html jsf

我有下一个代码:

<li>
    <h:form rendered="#{!loginController.session}">
        <h3>Inicio de Sesi&oacute;n</h3>
        <h:panelGrid columns="2" cellpadding="7">
            <h:outputText value="Usuario: " />
            <h:inputText id="loginname" value="#{loginController.loginname}" maxlength="16" />
            <h:outputText value="Contrase&ntilde;a: " />
            <h:inputSecret id="password" value="#{loginController.password}" maxlength="16"/>
            <h:outputText value="" />
            <h:commandButton value="Iniciar Sesi&oacute;n" action="#{loginController.CheckValidUser}"    />
        </h:panelGrid>
    </h:form>
</li>

但是当运行页面不呈现表单时,任何人都可以告诉我原因吗?

1 个答案:

答案 0 :(得分:5)

如果您正在使用古老的JSF 1.0 / 1.1实现,那么您需要将HTML包装在<f:verbatim>标签中,如下所示:

<f:verbatim><li></f:verbatim>
    <h:form rendered="#{!loginController.session}">
        <f:verbatim><h3>Inicio de Sesi&oacute;n</h3></f:verbatim>
        <h:panelGrid columns="2" cellpadding="7">
            ...

否则它们将最终位于生成的文档的顶部,之前所有JSF组件。

如果您正在使用JSF 1.2实现或更新版本,那么您应该能够在模板文本中编写纯HTML而不会出现问题,因为它们会在组件树中逐字逐句显示。表单未呈现的唯一原因是LoginController#isSession()返回true,因为这是rendered属性所依赖的内容。