[英]rich:calendar does not display within ui:composition
I'm new to JSF and I'm facing this weird issue. 我是JSF的新手,我正面临着这个奇怪的问题。 I'm sure it's a silly mistake but I just can't seem to figure it out.
我确定这是一个愚蠢的错误,但我似乎无法弄明白。 Basically, when I insert
rich:calendar
within ui:composition
it does not display. 基本上,当我在
ui:composition
插入rich:calendar
,它不会显示。 My (simplified) template is defined like this 我的(简化)模板定义如下
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title></title>
</h:head>
<h:body>
<ui:insert name="content"/>
<ui:debug/>
</h:body>
</html>
My index page 我的索引页面
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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:rich="http://richfaces.org/rich">
<head>
<title></title>
</head>
<body>
<ui:composition template="/indexLayout.xhtml">
<h:outputScript library="javascript" name="common.js" target="head"/>
<ui:define name="content">
<h:form>
<h:panelGrid columns="2">
From
<rich:calendar id="pickup" onchange="#{rich:component('return')}.setValue(#{rich:component('pickup')}.getValue())"
dayDisableFunction="disablementFunction" datePattern="MMM d, yyyy" value="#{reservation.pickUp}" />
To
<rich:calendar id="return" dayDisableFunction="disablementFunction" datePattern="MMM d, yyyy" />
</h:panelGrid>
<h:commandButton value="Redisplay" />
</h:form>
</ui:define>
</ui:composition>
</body>
</html>
If I define the index page without ui:composition
it displays just fine. 如果我在没有
ui:composition
情况下定义索引页面,它就会显示正常。 Please help. 请帮忙。 Thank you.
谢谢。
You should place your <h:outputScript />
inside the <ui:define></ui:define>
since when you are using <ui:composition />
, every <ui:insert />
inside the template are replaced by respective <ui:define />
. 您应该将
<h:outputScript />
放在 <ui:define></ui:define>
因为当您使用<ui:composition />
,模板中的每个<ui:insert />
被相应的<ui:define />
替换<ui:define />
。 Everything outside <ui:define />
is not rendered. <ui:define />
之外的所有内容都不会呈现。
In your case the JavaScript function disablementFunction
is not loaded so your rich:calendar
doesn't work properly. 在您的情况下,未加载JavaScript函数
disablementFunction
因此您的rich:calendar
无法正常工作。
Here is how your index page should look like : 以下是您的索引页面的外观:
<ui:composition template="/indexLayout.xhtml">
<ui:define name="content">
<h:outputScript library="javascript" name="common.js" target="head"/>
<h:form>
<h:panelGrid columns="2">
From
<rich:calendar id="pickup" onchange="#{rich:component('return')}.setValue(#{rich:component('pickup')}.getValue())" dayDisableFunction="disablementFunction" datePattern="MMM d, yyyy" value="#{reservation.pickUp}" />
To
<rich:calendar id="return" dayDisableFunction="disablementFunction" datePattern="MMM d, yyyy" />
</h:panelGrid>
<h:commandButton value="Redisplay" />
</h:form>
</ui:define>
</ui:composition>
More info : 更多信息 :
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.