1

我正在尝试在 xhtml 页面上显示 primefaces 时间表,但这不起作用。正如在这个问题中所说,我消除了使用 Ajax 的组件,我注意到当我评论引用 jquery 文件的链接时,schedual 会显示并且它工作正常,但当然其他 jquery 停止工作,我也得到以下 JS 错误:

TypeError: b3 is undefined @ http://localhost:8080/theprojectname/javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces:14

当我取消注释 jquery 参考文件的链接时,不显示时间表,并且出现 2 个 JS 错误:

TypeError: this.jq.mask is not a function @ http://localhost:8080/theprojectname/javax.faces.resource/primefaces.js.xhtml?ln=primefaces:16

and : 

TypeError: this.jqc.fullCalendar is not a function @ http://localhost:8080/theprojectname/javax.faces.resource/schedule/schedule.js.xhtml?ln=primefaces:1

PF 版本 4.3.1 和 5.3 发生了这种情况。

这是我的 index.xhtml :

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html>
<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:p="http://primefaces.org/ui"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:c="http://java.sun.com/jsp/jstl/core">

<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

    <link rel="stylesheet" href="CSS/general.css" type="text/css" />
    <link rel="stylesheet" href="CSS/jquery-ui-1.10.0.custom.min.css"
        type="text/css" />


    <!-- This is the jquery file reference link i've commented :  -->
    <!--     <script src="JS/jquery-1.8.3.js" /> -->

    <script src="JS/jquery-ui-1.10.0.custom.js" />
    <script src="JS/jquery.flip.js" />
    <script src="JS/jquerygen.js" />


    <title>my app</title>

    <script>
        //<![CDATA[



        //]]>
    </script>
</h:head>

<body>
    <f:view>
        <h:form id="form1">

            <h:panelGroup id="windsarea" layout="block">
                <h:panelGroup id="gesevntsincl" layout="block">


                    <p:growl id="messages" showDetail="true" />

                    <p:schedule id="schedule" value="#{scheduleController.eventModel}"
                        widgetVar="myschedule">

                        <p:ajax event="dateSelect"
                            listener="#{scheduleController.onDateSelect}"
                            update="eventDetails" oncomplete="eventDialog.show()" />
                        <p:ajax event="eventSelect"
                            listener="#{scheduleController.onEventSelect}"
                            update="eventDetails" oncomplete="eventDialog.show()" />
                        <p:ajax event="eventMove"
                            listener="#{scheduleController.onEventMove}" update="messages" />
                        <p:ajax event="eventResize"
                            listener="#{scheduleController.onEventResize}" update="messages" />

                    </p:schedule>

                    <p:dialog widgetVar="eventDialog" header="Event Details"
                        showEffect="clip" hideEffect="clip">
                        <h:panelGrid id="eventDetails" columns="2">
                            <h:outputLabel for="title" value="Title:" />
                            <p:inputText id="title" value="#{scheduleController.event.title}"
                                required="true" />

                            <h:outputLabel for="from" value="From:" />
                            <p:inputMask id="from"
                                value="#{scheduleController.event.startDate}" mask="99/99/9999">
                                <f:convertDateTime pattern="dd/MM/yyyy" />
                            </p:inputMask>

                            <h:outputLabel for="to" value="To:" />
                            <p:inputMask id="to" value="#{scheduleController.event.endDate}"
                                mask="99/99/9999">
                                <f:convertDateTime pattern="dd/MM/yyyy" />
                            </p:inputMask>

                            <h:outputLabel for="allDay" value="All Day:" />
                            <h:selectBooleanCheckbox id="allDay"
                                value="#{scheduleController.event.allDay}" />

                            <p:commandButton type="reset" value="Reset" />
                            <p:commandButton id="addButton" value="Save"
                                actionListener="#{scheduleController.addEvent}"
                                oncomplete="myschedule.update();eventDialog.hide();" />
                        </h:panelGrid>
                    </p:dialog>


                </h:panelGroup>

            </h:panelGroup>


            <div id="tasksbar" />
            <div id="startbutn" />

            <h:panelGroup id="startmenudiv">
                <h:panelGroup id="substartmenudiv" />
            </h:panelGroup>
            <div style="visibility: hidden;">
                <BR />
                <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR />
                <BR /> <BR /> <BR />
                <BR /> <BR /> <BR /> <BR />
                <BR /> <BR /> <BR /> <BR />
                <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR />
                <BR /> <BR /> <BR />
                <BR /> <BR /> <BR /> <BR />
                <BR /> <BR /> <BR /> <BR />
                <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR /> <BR />
                <BR /> <BR /> <BR />
                <BR />

            </div>

            <div id="loginbackground" />
            <div id="logindivflip">
                <div id="logindiv">
                    <br />
                    <div class="hidden" style="font-weight: 900;">Welcome,please
                        authentificate :</div>
                    <br />

                    <div class="hidden">
                        <h:outputText value="login :" />
                        <h:inputText class="rounded" value="#{userBean.login}" />
                    </div>
                    <br /> <br />
                    <div class="hidden">
                        <h:outputText value="password :" />
                        <h:inputText class="rounded" value="#{userBean.pwd}" />
                    </div>
                    <br /> <br />
                    <div class="hidden">
                        <span class="ebbtn"> <a id="logsubmitbtn" href=""
                            title="Reset" onclick="">Submit <f:ajax event="click"
                                    execute="@this" listener="#{userBean.verifierUserDsLdap}" />
                        </a> <a id="resetbtn" href="" title="Reset" onclick="">Reset</a>
                        </span>
                    </div>


                </div>
                <div id="loginphoto" />
            </div>



            <p:remoteCommand name="addNewWindow"
                actionListener="#{userBean.addNewWindow}">
                <f:param name="windowname" />
            </p:remoteCommand>

            <p:remoteCommand name="updatewinstylprops"
                actionListener="#{userBean.updatewinstylprops}">
                <f:param name="windowid" />
                <f:param name="top" />
                <f:param name="left" />
                <f:param name="width" />
                <f:param name="height" />
            </p:remoteCommand>




        </h:form>
    </f:view>
</body>
</html>

有人有线索吗?

4

1 回答 1

2

你不应该在你的页面中包含额外的 jquery,因为它已经与 primefcaes 捆绑在一起......

另外,使用h:outputScript代替<scripth:outputStylesheet代替link

所以你的 js 包含应该是这样的(注意我首先明确包含了与 primefaces 捆绑的 jquery

<h:head>
    <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
    <h:outputScript name="JS/jquery.flip.js" target="head" />
    <h:outputScript name="JS/jquerygen.js" target="head" />

将你JS的文件resources夹放在你文件夹中的WebContent文件夹下


您还应该阅读此JSF 资源库的用途是什么以及应该如何使用它?

于 2013-04-28T06:02:09.927 回答