0

我是 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显示就好了。请帮忙。谢谢你。

4

1 回答 1

2

你应该把你<h:outputScript /> 放在里面<ui:define></ui:define>因为当你使用的时候<ui:composition />,模板里面的每个<ui:insert />都被替换为各自的<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>

更多信息 :

于 2013-06-02T05:53:53.207 回答