Die Komponenten-Klasse ist verantwortlich für die Verwaltung der Eigenschaften, welche den Zustand der Komponente beschreiben. Das bedeutet, dass man eine geeignete Basisklasse für die Komponente auswählen muss, je nachdem, ob es sich um eine Eingabe- oder Ausgabe-Komponente handelt.
Die in Listing A beschriebene Komponente erweitert javax.faces.component.UIOutput , so dass sie eine URL anzeigt, die auf eine Style-Sheet-Datei oder den Inhalt eines Inline-Style-Sheets verweist.
Die Eigenschaft link gibt die Art des Wertes an: entweder eine URL oder der Inline-Style. Die Komponente muss außerdem ihren Status zwischen zwei Anfragen beim Server speichern und wiederherstellen können, und zwar mithilfe eines Objekts, das vom JSF-Framework verarbeitet wird. Das JSF-Framework ruft automatisch die Methoden saveState und restoreState auf, welche zu diesem Zweck in der Komponente implementiert wurden.
Schritt 2: Entwickeln des Renderers
Der Renderer hat zwei Aufgaben: Einmal ist er verantwortlich für die Ausgabe eines entsprechenden HTML-Fragments, welches die Komponente im Client darstellt. Normalerweise besteht dieses HTML-Fragment aus einigen HTML-Tags, welche für die Darstellung in einem normalen Webbrowser geeignet sind. Die Rendering-Phase kann auch zur Ausgabe von Javascript-Code verwendet werden, welcher der Verbesserung der clientseitigen Interaktion dient.
Die zweite Aufgabe eines Renderers ist es, die Daten, die vom Client kommen, zu dekodieren und damit den Status der serverseitigen Komponente zu aktualisieren (zum Beispiel den Text, den der Benutzer in ein Textfeld eingegeben hat). Das standardmäßige Render-Kit PROGRAM ist zwingend erforderlich, aber man kann auch andere Render-Kits bereitstellen um eine alternative clientseitige Repräsentation oder Sprache, wie SVG, zu bieten.
Der in Listing B implementierte Renderer wählt die Art des CSS, das an die HTML-Seite übermittelt werden soll, indem er die Link-Eigenschaft der Komponente überprüft.
Listing B
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.render.Renderer;
public class CSSRenderer extends Renderer {
public void encodeEnd(FacesContext context,
UIComponent component)
throws IOException {
super.encodeEnd(context, component);
if (component instanceof CSSComponent) {
CSSComponent cssComponent =
(CSSComponent) component;
String css = (String)cssComponent.getValue();
boolean isLink = cssComponent.isLink();
if (css != null)
if (isLink)
context.getResponseWriter().write(„ „);
else
context.getResponseWriter().write(„
";
//message for france
if("germany" == 'france'){
var message = '
';
message += 'Cher lecteur de ' + site_name + '
';
message += '';
message += '
Vous utilisez « Adblock » ou un autre logiciel qui bloque les écrans publicitaires. Ces écrans publicitaires sont une source de revenus nécessaire à notre indépendance.
';
message += '
Pour continuer à apprécier nos informations tout en gardant une bonne expérience de lecture, nous vous proposons soit :
';
message += '
';
message += '';
message += 'A) Validez dans votre logiciel Adblock votre acceptation de la visibilité des publicités sur les sites du groupe NetmediaEurope. ';
message += 'Depuis la barre des modules vous pouvez désactiver AdBlock pour le domaine "'+site_name+'" . Vous accéderez alors à l’ensemble des sites du groupe.
';
message += ' ';
message += '';
message += 'B) Rejoignez gratuitement notre communauté de lecteurs en partageant votre email professionnel. ';
message += 'Vous pouvez vous inscrire sur ce lien. Vous recevrez un email de bienvenue dans votre boite mail pour confirmer votre accord.
';
message += 'Vous pourrez continuer à consulter nos sites sans écrans publicitaires
';
message += ' ';
message += ' ';
message += '';
message += '
';
}else if("germany" == 'italy') {
//message for italy
var message = '
';
message += 'Caro lettore di ' + site_name + '
';
message += '';
message += '
Sembra che tu stia utilizzando « Adblock » o un altro software che blocca la visualizzazione della pubblicità. La pubblicità è una fonte di ricavi che ci permette di rimanere indipendenti.
';
message += '
Per continuare ad accedere ai nostri contenuti, con una buona esperienza di lettura, ti consigliamo di agire in uno dei seguenti modi:
';
message += '
';
message += '';
message += 'A) Permettere in Adblock la visualizzazione della pubblicità sui nostri siti. ';
message += 'Dalla barra degli strumenti puoi disabilitare Adblock per il dominio "' + site_name + '" .
';
message += ' ';
message += '';
message += 'B) Iscriverti gratuitamente alla nostra comunità di lettori fornendo la tua e-mail professionale. ';
message += 'Per far ciò, iscriviti qui. Riceverai una e-mail di benvenuto nella tua casella di posta, per convalidare e confermare la tua sottoscrizione.
';
message += 'Potrai continuare a consultare i nostri siti senza pubblicità.
';
message += ' ';
message += ' ';
message += '';
message += '
';
}else if("germany" == 'spain') {
//message for spain
var message = '
';
message += 'Estimado lector de ' + site_name + '
';
message += '';
message += '
Está utilizando un “Adblock” u otro tipo de software que bloquea los mensajes publicitarios. Estos mensajes son una fuente de ingresos que nos permite seguiradelante con nuestro trabajo diario.
';
message += '
Para seguir disfrutando de nuestros contenidos especializados en Tecnologías de la Información, le sugerimos lo siguiente:
';
message += '
';
message += '';
message += 'A) Por favor deshabilite el adblocker para nuestros sitios. Le aseguramos que nuestros anuncios sonapropiados y no intrusivos. De esta forma tendrá acceso a todas las publicaciones que edita el grupo NetMediaEurope. ';
message += 'Desde la barra de herramientas desactive AdBlock para el dominio "' + site_name + '" .
';
message += ' ';
message += '';
message += 'B) Acceda de forma gratuita a nuestra comunidad de lectores compartiendo con nosotros su dirección de correo electrónico. ';
message += 'Puede registrarse a través de este enlace. Recibirá un e-mail de bienvenida en su bandeja de entrada para confirmar que está de acuerdo.
';
message += 'En este punto podrá seguir navegando por nuestros sitios sin visualizar ningún anuncio publicitario.
';
message += ' ';
message += ' ';
message += '';
message += '
';
}else if("germany" == 'germany') {
//message for germany
var message = '
';
message += 'Sehr geehrter Leser von ' + site_name + '
';
message += '';
message += '
Sie nutzen einen Adblocker, der die Anzeige von Werbung verhindert. Dadurch entgehen unserem Herausgeber täglich Einnahmen, die für die Existenz einer unabhängigen Redaktion nötig sind.
';
message += '
Wir bitten Sie daher um folgendes:
';
message += '
';
message += '';
message += 'A) Bitte fügen Sie für ' + site_name + ' eine Ausnahmeregel in ihrer Adblocker-Software hinzu oder ';
message += 'Ausnahmeregel für ' + site_name + ' hinzufügen.
';
message += ' ';
message += '';
message += 'B) Registrieren Sie sich für einen unserer Newsletter unter folgendem Link. ';
message += 'Zur Bestätigung erhalten Sie eine Nachricht von uns.
';
message += ' ';
message += ' ';
message += '';
message += '
';
}else if("germany" == 'portugal' || "germany" == 'brazil') {
//message for germany
var message = '
';
message += 'Caros leitores de ' + site_name + '
';
message += '';
message += '
Parece que você está usando ""Adblock"" ou outro software que bloqueia a exibição de publicidade. Anúncios receita é necessário para manter a nossa qualidade e independência.
';
message += '
Para continuar acessando nosso conteúdo fantástico, sugerimos que você quer:
';
message += '
';
message += '';
message += 'A) Confirmar em seu software Adblock, a sua aceitação para ver anúncios em sites do grupo NetMediaEurope. Nós prometemos que os nossos anúncios são de bom gosto, unobstrusive e apropriada. ';
message += 'A partir da barra de ferramentas que você pode desativar Adblock para o domínio ' + site_name +'.
';
message += ' ';
message += '';
message += 'B) Registre-se grátis à nossa comunidade de leitores, fornecendo seu e-mail profissional. ';
message += 'Para fazer isso, por favor, assine aqui. Você receberá um e-mail de boas-vindas para validar e confirmar sua inscrição.
';
message += 'Você, então, ser capaz de continuar a visitar nossos sites sem propagandas.
';
message += ' ';
message += ' ';
message += '';
message += '
';
}else{
//message for UK
var message = '
';
message += 'Dear Readers of ' + site_name + '
';
message += '';
message += '
It seems that you are using "Adblock" or other software that blocks display of advertising. Advertisement revenue is necessary to maintain our quality and independence.
';
message += '
To continue accessing our fantastic content, we suggest you either:
';
message += '
';
message += '';
message += 'A) Confirm in your Adblock software, your acceptance to view advertisements on NetMediaEurope group websites. We promise that our ads are tasteful, unobstrusive and appropriate. ';
message += 'From the toolbar you can disable Adblock for the domain "' + site_name + '" .
';
message += ' ';
message += '';
message += 'B) Join for free our community of readers by providing your professional email. ';
message += 'To do this, please subscribe here. You will receive a welcome e-mail to validate and confirm your subscription.
';
message += 'You would then be able to continue browsing our sites without advertisements.
';
message += ' ';
message += ' ';
message += '';
message += '
';
}
var overlay = jQuery('
');
overlay.appendTo("body");
var overlay_message = jQuery('' + message + '
');
overlay_message.appendTo("#abl-overlay");
$(style).appendTo("#abl-overlay");
var overlay_bg = jQuery('
');
overlay_bg.appendTo("#abl-overlay");
ga('send', 'event', 'AdblockMessage', 'Use', 'Yes');
$("#abl-overlay .glyphicon-remove").on("click", function() {
$("#abl-overlay").remove();
// Save in cookie during 30d
kaminoCookie.setItem(cookie_site_name, 'true', 1, "\/", "." + site_name, false);
ga('send', 'event', 'AdblockMessage', 'Close', 'Yes');
});
$( "#subcriber_link" ).on("click", function() {
ga('send', 'event', 'AdblockMessage', 'subcriber_click', 'Yes');
});
}
});
}(jQuery));