【问题标题】:rich:calendar does not display within ui:compositionrich:calendar 不在 ui:composition 中显示
【发布时间】:2013-06-02 04:36:56
【问题描述】:

我是 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 的情况下定义索引页,它会显示得很好。请帮忙。谢谢你。

【问题讨论】:

    标签: jsf jsf-2 richfaces


    【解决方案1】:

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

    在您的情况下,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>
    

    更多信息:

    【讨论】:

      猜你喜欢
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2016-05-05
      • 2019-06-05
      • 2011-11-18
      • 1970-01-01
      相关资源
      最近更新 更多