2017-02-27 1 views
0

Se produit au moment du chargement de la page, en plus du parateur ne trouve pas la pièce de canal ou ne peut pas lire certains caractères .J'utilise l'exemple des premiersfils du chat, apparemment j'ai une exception en essayant d'ouvrir le canal

<p:socket onMessage="handleMessage" channel="/{room}" autoConnect="false" widgetVar='subscriber' /> 

causés par:

java.lang.IllegalArgumentException: [/ contexte/primepush/{} chambre] n'est pas un fragment d'URL valide. Pensez à coder les parties pertinentes de l'URL avec [classe org.ocpsoft.urlbuilder.util.Encoder]

mon web.xml

<servlet> 
     <servlet-name>Push Servlet</servlet-name> 
     <servlet-class>org.primefaces.push.PushServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
     <async-supported>true</async-supported> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Push Servlet</servlet-name> 
     <url-pattern>/primepush/*</url-pattern> 
    </servlet-mapping> 

dans mon haricot

public void login(BLogin log) { 
RequestContext requestContext = RequestContext.getCurrentInstance(); 
     username=log.getLogNombres()+" "+log.getLogApellidos(); 
     if(users.contains(username)) { 
      //loggedIn = false; 
      //FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Username taken", "Try with another username.")); 
      //requestContext.update("growl"); 
      // requestContext.execute("PF('subscriber').connect('/" + username + "')"); 
      loggedIn = true; 
     } 
     else{ 
      users.add(username); 
      requestContext.execute("PF('subscriber').connect('/" + username + "')"); 
      loggedIn = true; 
     } 
    } 

mon xhtml

<f:metadata> 
      <f:event type="preRenderView" listener="#{chatView.login(bLoginController.getbLogin())}" /> 
     </f:metadata> 
      <p:growl id="growl" showDetail="true"/> 
      <p:socket onMessage="handleMessage" channel="/{room}" autoConnect="false" widgetVar='subscriber' /> 
      <script type="text/javascript"> 
       function handleMessage(message) { 
        var chatContent = $(PrimeFaces.escapeClientId('form:public')), 
          text = (message.user) ? message.user + ':' + message.text : message.text; 

        chatContent.append(text + '<br />'); 

        //keep scroll 
        chatContent.scrollTop(chatContent.height()); 

        if (message.updateList) { 
         updateList(); 
        } 
       } 
      </script> 

J'essaie

 <p:socket onMessage="handleMessage" channel="/%7Broom%7D" 

et d'autres erreurs

16:16:21,998 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (default task-16) Error Rendering View[/pages/home.xhtml]: java.lang.IllegalStateException: No parameter [room] was set in the pattern [/context/primepush/{room}]. Call address.set("room", value); or remove the parameter from the pattern. 
+0

S'il vous plaît inclure le code correspondant. – Julian

+0

s'il vous plaît poster le code dans la question dans le format approprié (pas comme un commentaire). Il est presque impossible de lire de cette façon. J'ai mis à jour votre question avec le code que vous avez initialement publié. Depuis lors, vous avez mis à jour votre commentaire. Vous obtiendrez beaucoup plus de réponses est votre code est facile à lire. – Julian

+0

Okay! Je n'arrive toujours pas à trouver un moyen de le résoudre –

Répondre

0

La solution est d'écrire uniquement/chambre sans que les parents et les connexions ont été créées correctement

<p:socket onMessage="handleMessage" channel="/room" autoConnect="false" widgetVar='subscriber' /> 
0

L'erreur se produit parce que Réécrire/PrettyFaces ne parvient pas à analyser l'URL correspondante. C'est probablement parce que vous utilisez une version TRÈS ancienne de Rewrite/PrettyFaces à partir de 2013. Veuillez mettre à jour vers 3.4.1.Final. Il y a eu quelques corrections de bogues concernant l'analyse d'URL dans les dernières versions et je suis confiant que la mise à jour corrigera votre problème.

Voir: https://github.com/ocpsoft/rewrite/issues/224

+0

I Changer la version de prettyfaces en 3.4.1 et générer la même erreur –