2012-09-21 5 views
0

Я пытаюсь использовать р: толчок в диалоге, и я получаю эту ошибку в хроме:не может использовать primefaces нажать

Uncaught Error: INVALID_STATE_ERR: DOM Exception 11 primefaces.js.xhtml:1 
    PrimeFaces.widget.PrimeWebSocket.send primefaces.js.xhtml:1 
    PrimeFaces.ajax.AjaxUtils.handleResponse primefaces.js.xhtml:1 
    PrimeFaces.ajax.AjaxResponse primefaces.js.xhtml:1 
    k.success primefaces.js.xhtml:1 
    b.Callbacks.bv jquery.js.xhtml:16 
    b.Callbacks.bE.fireWith jquery.js.xhtml:16 
    bF jquery.js.xhtml:23 
    b.ajaxTransport.send.bv 

Нажмите сервер работает в причалу 8.1.5.v20120716 в порту 9090 Это часть web.xml моего приложения:

<context-param> 
     <param-name>primefaces.PUSH_SERVER_URL</param-name> 
     <param-value>ws://localhost:9090/push/</param-value> 
</context-param> 

это содержание web.xml от нажимной сервера:

<display-name>PUSH SERVER</display-name> 
<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
<servlet> 
    <servlet-name>Push Servlet</servlet-name> 
    <servlet-class>org.primefaces.push.PushServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    <init-param> 
     <param-name>channels</param-name> 
     <param-value>importador</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Push Servlet</servlet-name> 
    <url-pattern>/push/*</url-pattern> 
</servlet-mapping> 

содержание диалога:

... 
<h:panelGroup layout="block" styleClass="hrgi-div-form clearfix"> 
     <h:panelGroup id="painel" layout="block"> 
       <p:progressBar widgetVar="barraProgressoImportador" ajax="true" 
           value="#{modeloPopupImportadorImediatoNFe.porcentagem}"/> 
       <h:outputText value="#{modeloPopupImportadorImediatoNFe.mensagem}"/> 
     </h:panelGroup> 
     <p:push channel="importador" onmessage="atualizarPorcentagemImportacao"/> 
</h:panelGroup> 
... 

Javascript код, который называется (просто показать предупреждение):

function atualizarPorcentagemImportacao(evt, data){ 
    alert("importado "+data); 
} 

и, наконец, код, попробуйте нажать:

public void abrir() { 
     ... 
     modeloPopup.setContext(RequestContext.getCurrentInstance()); 
     modeloPopup.getContext().push("importador", 0); 
} 

Могу ли я делать что-то не так??

ДОБАВЛЕНО Если это может быть полезно, это мой pom.xml нажимного-сервер

<parent> 
    <artifactId>modulos-web</artifactId> 
    <groupId>com.hrgi.web</groupId> 
    <version>0.1.0</version> 
</parent> 
<modelVersion>4.0.0</modelVersion> 
<artifactId>push-server</artifactId> 
<packaging>war</packaging> 
<name>push-server</name> 
<dependencies> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-websocket</artifactId> 
     <version>8.1.5.v20120716</version> 
    </dependency> 
    <dependency> 
     <groupId>org.atmosphere</groupId> 
     <artifactId>atmosphere-runtime</artifactId> 
     <version>1.0.1</version> 
    </dependency> 
</dependencies> 
<build> 
    <finalName>push-server</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.mortbay.jetty</groupId> 
      <artifactId>jetty-maven-plugin</artifactId> 
      <version>8.1.5.v20120716</version> 
      <configuration> 
       <connectors> 
        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
         <port>9090</port> 
         <maxIdleTime>60000</maxIdleTime> 
        </connector> 
       </connectors> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

ответ

1

вам необходимы следующие настройки, чтобы нажимная работы.

в pom.xml:

<dependency> 
     <groupId>org.atmosphere</groupId> 
     <artifactId>atmosphere-runtime</artifactId> 
     <version>1.0.0.RC1</version> 
    </dependency> 

в web.xml установка толчок сервлет:

<servlet> 
     <servlet-name>Push Servlet</servlet-name> 
     <servlet-class>org.primefaces.push.PushServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Push Servlet</servlet-name> 
     <url-pattern>/primepush/*</url-pattern> 
    </servlet-mapping> 

после этих толчок должен работать.

вы можете посмотреть на primefaces_user_quide dowument для получения более подробной и полной информации

+0

Текущие PrimeFaces 3.x Руководство пользователя говорит что-то совершенно другое. Возможно, вы используете старый PrimeFaces 2.x? – BalusC

+0

нет, я использую perffaces 3.4, я скопировал ответ из руководства пользователя. Мне не нужно было использовать push до сих пор, поэтому я не знаю, является ли руководство пользователя правильным или устаревшим. – Hossein

+0

Я снова загрузил руководство пользователя, и я не вижу в нем никакой разницы. Если вы не используете платную версию, и есть какая-то вещь, которая не упоминается в бесплатной версии;) – Hossein

Смежные вопросы