繁体   English   中英

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

[英]rich:calendar does not display within ui:composition

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

<?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情况下定义索引页面,它就会显示正常。 请帮忙。 谢谢。

您应该将<h:outputScript /> 放在 <ui:define></ui:define>因为当您使用<ui:composition /> ,模板中的每个<ui:insert />被相应的<ui:define />替换<ui:define /> <ui:define />之外的所有内容都不会呈现。

在您的情况下,未加载JavaScript函数disablementFunction因此您的rich:calendar无法正常工作。

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

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

更多信息 :

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM