This page (revision-55) was last changed on 11-Mar-2016 22:39 by Dieter Käppel

This page was created on 12-Nov-2010 09:09 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
55 11-Mar-2016 22:39 23 KB Dieter Käppel to previous
54 11-Mar-2016 22:39 23 KB Dieter Käppel to previous | to last
53 09-Jan-2014 11:04 23 KB Dieter Käppel to previous | to last
52 27-Jul-2013 13:25 23 KB Dieter Käppel to previous | to last
51 24-Jul-2013 19:50 23 KB Dieter Käppel to previous | to last
50 23-Jul-2013 08:35 23 KB Dieter Käppel to previous | to last
49 08-Jul-2013 19:14 21 KB Dieter Käppel to previous | to last
48 11-Jun-2013 12:50 20 KB Dieter Käppel to previous | to last
47 26-Apr-2013 11:13 19 KB Dieter Käppel to previous | to last
46 26-Apr-2013 11:11 18 KB Dieter Käppel to previous | to last
45 26-Apr-2013 07:42 16 KB Dieter Käppel to previous | to last
44 26-Feb-2013 13:12 16 KB Dieter Käppel to previous | to last
43 18-Dec-2012 12:30 16 KB Dieter Käppel to previous | to last
42 16-Dec-2012 21:18 16 KB Dieter Käppel to previous | to last
41 16-Dec-2012 14:25 15 KB Dieter Käppel to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 96 added one line
<h:outputText value="#{cc.test}"/>
At line 99 removed one line
<h:outputText value="#{cc.test}"/>
At line 153 changed 2 lines
!!!AJAX
!!AJAX Status
!!!AJAX Status
At line 191 removed 74 lines
!!AJAX-Push
Momentan relativ einfach zu konfigurieren ist der Primefaces-Push, der seit der Version 3.4 auf Atmosphere-Framework basiert. Atmosphere-Framework ist momentan das führende Framework für alle möglichen Push-Varianten, zwischen Server und Browser, falls man sich nicht vollzeit mit diesem Thema beschäftigen möchte.
pom.xml:
{{{
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.4-SNAPSHOT</version>
</dependency>
...
<repositories>
<repository>
<id>prime-repo</id>
<name>Prime Technology Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
}}}
web.xml, es ist eine Web-App 3.0 erforderlich:
{{{
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
...
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
...
</web-app>
}}}
Java:
{{{
public void someMethod() {
PushContextFactory.getDefault().getPushContext().push("/test", null);
}
}}}
Der Eintrag "/test" ist der sogenannte Channel über dem gepusht wird.
Im XHTML wird entweder ein AJAX-Tag verwendet:
{{{
<p:socket channel="/test" autoConnect="true">
<p:ajax event="message" update=":push-form:chat"/>
</p:socket>
}}}
Oder wenn der Update manuell gemacht werden soll, kann auch Javascript verwendet werden:
{{{
<p:socket channel="/test" autoConnect="true" onMessage="someMethod"/>
}}}
Die Methode wird dann mit einem Parameter "data" aufgerufen, welches dem JSON-Serialisiertem Objekt aus dem Server-Push-Aufruf context.push("/test", data); entspricht.
!!Probleme mit AJAX-Submits
Formulare können nicht mehr abgeschickt werden, wenn diese über ein Parent-Element mit AJAX neu gerenderet wurden. Abhilfe bringt die explizite Angabe der Formular-Id beim Rerender.
Alternativ kann [JSF Ext] mit ins Projekt eingebunden werden, die Komponenten-Bibliothek enthält Javascript-Code, der das Problem transparent gelöst.
Eine weitere Ursache sind sich veränderte Client-Ids zwischen Rendering und Form Submit. Eine Lösung ist, den Naming-Containern und den Submit-Elementen Ids zu geben. Dies erleichtert generell das Debugging von Formularen, da die Ids oft in Fehlermeldungen angezeigt werden, die betreffenden Elemente werden so leicht gefunden.
At line 404 changed one line
JSF verwendet eine Logging-Konfiguration, die über die JVM-Logging-Properties eingestellt wird. Diese befinden sich in
JSF verwendet eine Logging-Konfiguration, die über die JVM-Logging-Properties eingestellt wird. Diese befinden sich in %JAVA_HOME%/jre/lib/logging.properties konfiguriert wird. Dort wird zunächst das Logging des java.util.logging.ConsoleHandler auf ALL gestellt, damit Logging-Events höher als INFO auch ausgegeben werden. Dann können Einträge hinzugefügt werden, wie zum Beispiel für javax.enterprise.resource.webcontainer.jsf.context, um Exceptions bei EL-Expressions auszugeben:
At line 406 changed 6 lines
%JAVA_HOME%/jre/lib/logging.properties
konfiguriert wird. Dort wird zunächst das Logging des java.util.logging.ConsoleHandler auf ALL gestellt, damit Logging-Events höher als INFO auch ausgegeben werden. Dann können Einträge hinzugefügt werden, wie zum Beispiel für javax.enterprise.resource.webcontainer.jsf.context, um Exceptions bei EL-Expressions auszugeben:
Den vorhandenen Eintrag auf ALL umstellen:
{{{
At line 414 removed 2 lines
Und diesen neuen Eintrag am Ende der Datei hinzufügen:
At line 335 added one line
}}}
At line 390 added 67 lines
!!!JSF AJAX-Push
Momentan relativ einfach zu konfigurieren ist der Primefaces-Push, der seit der Version 3.4 auf Atmosphere-Framework basiert. Atmosphere-Framework ist momentan das führende Framework für alle möglichen Push-Varianten, zwischen Server und Browser, falls man sich nicht vollzeit mit diesem Thema beschäftigen möchte.
pom.xml:
{{{
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.4-SNAPSHOT</version>
</dependency>
...
<repositories>
<repository>
<id>prime-repo</id>
<name>Prime Technology Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
}}}
web.xml, es ist eine Web-App 3.0 erforderlich:
{{{
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
...
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
...
</web-app>
}}}
Java:
{{{
public void someMethod() {
PushContextFactory.getDefault().getPushContext().push("/test", null);
}
}}}
Der Eintrag "/test" ist der sogenannte Channel über dem gepusht wird.
Im XHTML wird entweder ein AJAX-Tag verwendet:
{{{
<p:socket channel="/test" autoConnect="true">
<p:ajax event="message" update=":push-form:chat"/>
</p:socket>
}}}
Oder wenn der Update manuell gemacht werden soll, kann auch Javascript verwendet werden:
{{{
<p:socket channel="/test" autoConnect="true" onMessage="someMethod"/>
}}}
Die Methode wird dann mit einem Parameter "data" aufgerufen, welches dem JSON-Serialisiertem Objekt aus dem Server-Push-Aufruf context.push("/test", data); entspricht.
At line 469 added 5 lines
!!!Formulare und AJAX
Formulare können nicht mehr abgeschickt werden, wenn diese über ein Parent-Element mit AJAX neu gerenderet wurden. Abhilfe bringt die explizite Angabe der Formular-Id beim Rerender.
Alternativ kann [JSF Ext] mit ins Projekt eingebunden werden, die Komponenten-Bibliothek enthält Javascript-Code, der das Problem transparent gelöst.
At line 563 removed 6 lines
!!!Navigation
Für die Navigation gibt es zwei Parameter:
* __faces-redirect:__ Sinnvoller Wert ist nur "true". Dieser Parameter führt zum ausführen eines Redirect nach der Navigation.
* __includeViewParams:__ Ebenfalls nur "true" sinnvoll. Führt zur Übernahme der vorherigen View-Parameter.