我有下一个代码:
<li>
<h:form rendered="#{!loginController.session}">
<h3>Inicio de Sesió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ña: " />
<h:inputSecret id="password" value="#{loginController.password}" maxlength="16"/>
<h:outputText value="" />
<h:commandButton value="Iniciar Sesión" action="#{loginController.CheckValidUser}" />
</h:panelGrid>
</h:form>
</li>
但是当运行页面不呈现表单时,任何人都可以告诉我原因吗?
答案 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ón</h3></f:verbatim>
<h:panelGrid columns="2" cellpadding="7">
...
否则它们将最终位于生成的文档的顶部,之前所有JSF组件。
如果您正在使用JSF 1.2实现或更新版本,那么您应该能够在模板文本中编写纯HTML而不会出现问题,因为它们会在组件树中逐字逐句显示。表单未呈现的唯一原因是LoginController#isSession()
返回true
,因为这是rendered
属性所依赖的内容。