rich:日历不显示在ui:composition中

时间:2013-06-02 04:36:56

标签: jsf jsf-2 richfaces

我是JSF的新手,我正面临这个奇怪的问题。我确定这是一个愚蠢的错误,但我似乎无法弄明白。基本上,当我在rich:calendar中插入ui:composition时,它不会显示。我的(简化)模板定义如下

<?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>

我的索引页

<?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>

如果我在没有ui:composition的情况下定义索引页面,则显示正常。请帮忙。谢谢。

1 个答案:

答案 0 :(得分:2)

您应该将<h:outputScript /> 置于<{1}}内{/ 1}},因为当您使用<ui:define></ui:define>时,模板内的每个<ui:composition />都会被相应的<ui:insert />。 <{1}}以外的所有内容都不会呈现。

在您的情况下,未加载JavaScript函数<ui:define />,因此<ui:define />无效。

以下是您的索引页面的外观:

disablementFunction

更多信息: