Spring Boot JSF ile Primefaces Kullanımı

Spring Boot JSF ile Primefaces Kullanımı

Spring Boot JSF ile Primefaces Kullanımı

1 ) Spring Boot ile Jsf Uygulaması

Öncelikle Spring Boot ile JSF projesi nasıl oluşturulur anlatmıştık.Buradan o dersi inceleyip projenin son halini indirebilirsiniz.O proje üzerinde primefaces kütüphanesini ekleyeceğiz.

2 ) Primefaces Araçlarının Eklenmesi

Önceki derste anlattığımız hellojsf projesini açalım ve devam edelim.

2.1 ) Pom Xml Düzenlenmesi

Primefaces tema kütüphanesi maven repositoryde olmadığı için repo bilgisini ayrı ekledim

 	<!-- Primefaces Theme Repositories -->
	<repositories>
		<repository>
			<id>prime-repo</id>
			<name>Prime Repo</name>
			<url>http://repository.primefaces.org</url>
		</repository>
	</repositories>

Primefaces kütüphanesini ve repositorysini özel olarak eklediğimiz tema kütüphanesini de Dependency kısmına ekledim

	<!-- Primefaces Dependency -->
		<dependency>
			<groupId>org.primefaces</groupId>
			<artifactId>primefaces</artifactId>
			<version>${primefaces.version}</version>
		</dependency>

		<dependency>
			<groupId>org.primefaces.themes</groupId>
			<artifactId>all-themes</artifactId>
			<version>${primefaces.theme.version}</version>
		</dependency>

Pom Xml son hali

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.atakancoban</groupId>
	<artifactId>helloJsf</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<name>helloJsf</name>
	<description>Spring Boot ile JSF Merhaba Dünya Örnegi!</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<jsf.version>2.2.9</jsf.version>
		<primefaces.version>6.1</primefaces.version>
		<primefaces.theme.version>1.0.10</primefaces.theme.version>
	</properties>

	<!-- Primefaces Theme Repositories -->
	<repositories>
		<repository>
			<id>prime-repo</id>
			<name>Prime Repo</name>
			<url>http://repository.primefaces.org</url>
		</repository>
	</repositories>


	<dependencies>
		<!-- Spring Dependency -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- JSF Dependency -->
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-api</artifactId>
			<version>${jsf.version}</version>
		</dependency>
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-impl</artifactId>
			<version>${jsf.version}</version>
		</dependency>

		<!-- Tomcat Embed Dependency -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>


		<!-- Primefaces Dependency -->
		<dependency>
			<groupId>org.primefaces</groupId>
			<artifactId>primefaces</artifactId>
			<version>${primefaces.version}</version>
		</dependency>

		<dependency>
			<groupId>org.primefaces.themes</groupId>
			<artifactId>all-themes</artifactId>
			<version>${primefaces.theme.version}</version>
		</dependency>


	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

2.2 ) SpringBootApplication Sınıfı Düzenlenmesi

Spring uygulaması üzerinde jsf ayarlarını yaptığımız kısımda primefaces ile ilgili ayarlar ekliyoruz.Birer satır bilgiyi yorum satırı olarak ekledim detaylı araştırabilirsiniz.

	@Bean
	public ServletContextInitializer servletContextInitializer() {
		return servletContext -> {
			servletContext.setInitParameter("com.sun.faces.forceLoadConfiguration", Boolean.TRUE.toString());
			//Primefacesin ücretsiz temalarından bootstrap örneği yaptık değiştirebilirsiniz
			servletContext.setInitParameter("primefaces.THEME", "bootstrap");
			//Primefaces client browser tarafında kontrol edilebilme örneğin textbox 10 karakter olmalı vs..
			servletContext.setInitParameter("primefaces.CLIENT_SIDE_VALIDATION", Boolean.TRUE.toString());
			//Xhtml sayfalarında commentlerin parse edilmemesi.
			servletContext.setInitParameter("javax.faces.FACELETS_SKIP_COMMENTS", Boolean.TRUE.toString());
			//primefaces icon set için
			servletContext.setInitParameter("primefaces.FONT_AWESOME", Boolean.TRUE.toString());
		};
	}
	

Spring Boot Application(HelloJsfApplication.java) son hali

</pre>

package com.atakancoban.helloJsf;

import javax.faces.webapp.FacesServlet;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.sun.faces.config.ConfigureListener;

@SpringBootApplication
@Configuration
@ComponentScan("com.atakancoban")
public class HelloJsfApplication {

public static void main(String[] args) {
SpringApplication.run(HelloJsfApplication.class, args);
}

//JSF Configration Başlangıc
@Bean
public ServletRegistrationBean<FacesServlet> facesServletRegistraiton() {
ServletRegistrationBean<FacesServlet> registration = new ServletRegistrationBean<FacesServlet>(new FacesServlet(), new String[] { "*.xhtml" });
registration.setName("Faces Servlet");
registration.setLoadOnStartup(1);

return registration;
}

@Bean
public ServletContextInitializer servletContextInitializer() {
return servletContext -> {
servletContext.setInitParameter("com.sun.faces.forceLoadConfiguration", Boolean.TRUE.toString());
//Primefacesin ücretsiz temalarından bootstrap örneği yaptık değiştirebilirsiniz
servletContext.setInitParameter("primefaces.THEME", "bootstrap");
//Primefaces client browser tarafında kontrol edilebilme örneğin textbox 10 karakter olmalı vs..
servletContext.setInitParameter("primefaces.CLIENT_SIDE_VALIDATION", Boolean.TRUE.toString());
//Xhtml sayfalarında commentlerin parse edilmemesi.
servletContext.setInitParameter("javax.faces.FACELETS_SKIP_COMMENTS", Boolean.TRUE.toString());
//primefaces icon set için
servletContext.setInitParameter("primefaces.FONT_AWESOME", Boolean.TRUE.toString());
};
}

@Bean
public ServletListenerRegistrationBean<ConfigureListener> jsfConfigureListener() {
return new ServletListenerRegistrationBean<ConfigureListener>(new ConfigureListener());
}
//JSF Configration Sonu
}
<pre>

2.3 ) Xhtml & Primefaces İlişkilendirmesi

Xhtml sayfasında primefaces araçlarını kullanmak için kütüphanesini eklememiz gerekli.

xmlns:p="http://primefaces.org/ui"

Xhtml sayfası

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui">

<h:head></h:head>
<body>
	<h:form>
		<h:outputLabel value="#{helloBean.message}" />
		<h:commandButton value="Hello World!" actionListener="#{helloBean.clickHelloWorldButton}" />
		
		<p:outputLabel value="#{helloBean.message}"/>
		<p:commandButton value="Primefaces" icon="fa fa-fw fa-motorcycle " style="padding-bottom:5px" actionListener="#{helloBean.clickHelloWorldButton}"/>
		<p:calendar/>

	</h:form>
</body>
</html>

2.4 ) Önizleme

Primefaces araçları xml kısmı

<p:outputLabel value="#{helloBean.message}"/>
<p:commandButton value="Primefaces" icon="fa fa-fw fa-motorcycle " 
style="padding-bottom:5px" actionListener="#{helloBean.clickHelloWorldButton}"/>
<p:calendar/>

Burada icon= fa-motorcycle kısmı FONT_AWESOME eklentisi ile olmaktadır.
SpringApplication ayarları kısmında bunu eklemiştik.Detayları Burada.

 

Sprint Boot jsf projesi üzerinde primefaces araçları örneği

Projeyi Buradan indirebilirsiniz

Benzer Bloglar  : Şükrü Çakmak

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir