Primefaces BlockUI не работает

В моей форме JSF я использую BlockUI, чтобы показать статус занятости во время обработки. Он работал нормально, пока я не добавил javascript в заголовок. С тегом script BlockUI вообще не отображается. Как я могу обойти это? Ниже приведена моя форма с javascripts, в которых не работает blockUI. Я использую JSF 2.2, Primefaces 3.4.2 в Glassfish 3.2.2 и браузер Firefox.

<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">
    <h:head>
        <title>TODO supply a title</title>
        <meta name="viewport" content="width=device-width"/>
        <script src="js/jquery.min.js"></script>
        <script src="js/classie.js"></script>
        <script src="js/menu.js"></script>               
        <script type="text/javascript">
            $(function() {
                $('#da-slider').cslider({
                    autoplay: true,
                    bgincrement: 450
                });
            });
        </script>
    </h:head>
    <h:body>
        <h:form id="registration"> 
            <h1> Sign up </h1> 
            <p:growl id="growl" showDetail="true" /> 
            <p:dialog header="Error registering user" widgetVar="dlg" resizable="false"/>
            <p:messages id="messages" autoUpdate="true" closable="true"/>
            <p:panel id="panel">
                <h:panelGrid id="grid" columns="2" cellpadding="4">  
                    <p:outputLabel for="username" value="Username:" />
                    <p:inputText id= "username" value="#{userBean.userId}" required="true">                      
                    </p:inputText>                 
                    <p:outputLabel for= "firstname" value="First Name: " />
                    <p:inputText id="firstname" value="#{userBean.firstName}" required="true"/>                   
                    <p:outputLabel for= "lastname" value="Last Name: " />
                    <p:inputText id= "lastname" value="#{userBean.lastName}" required="true"/>
                    <p:outputLabel for= "email" value="Email Address: " />
                    <p:inputText id= "email" value="#{userBean.email}" required="true"
                                 validatorMessage="Invalid email format" >
                    </p:inputText>
                    <p:outputLabel for= "organisation" value="Organisation:" />
                    <p:inputText id="organisation" value="#{userBean.organisation}" required="true"/>
                </h:panelGrid>
            </p:panel>
            <p class="signin button">
                <p:commandButton id="saveButton" value="Proceed" actionListener="#{userBean.createUser()}" onclick="#{userBean.validateForm()}" update="registration:panel @this"/>
                <p:commandButton value="Reset" update="registration:panel" process="@this" actionListener="#{userBean.resetButton()}"/>
            </p> 
            <p:blockUI block="panel" trigger="saveButton">  
                <p>Processing....</p>
                <p:graphicImage value="http://www.primefaces.org/showcase/images/loading.gif"/>  
            </p:blockUI>
        </h:form>
    </h:body>
</html>    

person jpr    schedule 14.02.2014    source источник
comment
Что-нибудь появляется в консоли браузера?   -  person Oskars Pakers    schedule 14.02.2014
comment
Я вижу следующее, связанное с js. TypeError: $.browser is undefined. Primefaces.js: использование getPreventDefault() устарело. Вместо этого используйте defaultPrevented. jquery.js:14 , TypeError: $.ui не определено Primefaces.js:1   -  person jpr    schedule 14.02.2014


Ответы (1)


В вашем XHTML

<script src="js/jquery.min.js"></script>

PrimeFaces уже поставляется с пакетом jQuery, однако вы загрузили и установили еще один, который будет конфликтовать только с пакетом PrimeFaces jQuery.

Удалить выше line т.е. <script src="js/jquery.min.js"></script>

Попробуйте выше и посмотрите, поможет ли это.

person Makky    schedule 14.02.2014
comment
Это все еще не работает. Но теперь, если я удалю этот скрипт, блок-интерфейс заработает. Раньше такого не было. Я предполагаю, что удаление jquery сделало некоторое улучшение. - person jpr; 14.02.2014
comment
Поскольку мы больше не получаем JQuery явно, я попробовал без первой строки j$ = jQuery.noConflict(), и это работает. Спасибо за совет. - person jpr; 14.02.2014
comment
Не могли бы вы удалить jQuery.noConflict() из своего поста, чтобы я мог принять ответ? - person jpr; 14.02.2014
comment
@jpr Я удалил лишний код. Теперь вы можете проголосовать и принять ответ. :) - person Makky; 14.02.2014