我有一个页面,我需要在<f:facet name="last>
内嵌套一些组件,以便应用自定义样式(我使用Primefaces,这是他们处理CSS优先级排序的方式,如上所述{ {3}})。但是我无法在<f:facet>
标记内放置任何内容。
以下是一些示例代码:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>TODO supply a title</title>
</h:head>
<h:body>
<div>
<h:form>
<h:outputLabel for="loginField" value="Login:" styleClass="form-label"/>
<p:inputText id="loginField" value="#{subscriptionBean.login}" styleClass="form-field"/>
<f:facet name="last">
<h:outputLabel for="pwd2" value="Password:" styleClass="form-label"/>
<p:password id="pwd2" value="#{subscriptionBean.password}" required="true" match="pwd1" styleClass="form-field"/>
<p:message for="pwd2" display="text" styleClass="form-field"/>
</f:facet>
</h:form>
</div>
</h:body>
我不能在生成的页面中看到密码输入字段吗?它根本就不会出现。
按照starf的回答,这里有一些示例代码:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<f:facet name="last">
<h:outputStylesheet library="css" name="default.css"/>
</f:facet>
</h:head>
<h:body>
<h:outputText value="Rendered text!"/>
<h:form>
<h:outputLabel for="pdw1" value="Password: "/>
<p:password id="pwd1" required="true"/>
<p:message for="pwd1"/>
</h:form>
</h:body>
结果呈现的页面标题:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link type="text/css" rel="stylesheet" href="/AquitelManagement/faces/javax.faces.resource/default.css?ln=css" />
<link type="text/css" rel="stylesheet" href="/AquitelManagement/faces/javax.faces.resource/primefaces.css?ln=primefaces&v=5.0.RC2" />
<script type="text/javascript" src="/AquitelManagement/faces/javax.faces.resource/jquery/jquery.js?ln=primefaces&v=5.0.RC2">
</script><script type="text/javascript" src="/AquitelManagement/faces/javax.faces.resource/jquery/jquery-plugins.js?ln=primefaces&v=5.0.RC2">
</script>
<script type="text/javascript" src="/AquitelManagement/faces/javax.faces.resource/primefaces.js?ln=primefaces&v=5.0.RC2">
</script>
</head>
<body>...
答案 0 :(得分:1)
您正尝试在h:form标记上注册构面。链接中的示例在h:head标记上注册。 Primefaces有一个头部自定义渲染器。
没有为表单定义这样的方面,因此它不知道如何处理它。另请参阅<f:facet> not working with <h:form>
我相信你会混淆css订购问题。如果你想覆盖PrimeFaces css,请使用头部的“last”facet - 这会将你的css定义放在primefaces css下面。
<h:head>
<f:facet name="last">
<h:outputStylesheet library="default" name="css/style.css" />
</f:facet>
</h:head>
请参阅http://www.mkyong.com/jsf2/primefaces/resource-ordering-in-primefaces/以获得更好的解释。