Spring Boot-und die JSF/Primefaces/Richfaces

"Ich habe in Kontakt mit Feder nur für ein paar Monate jetzt, und vor kurzem kam auf Spring Boot beim durchstöbern der guides-section. Die guides waren sehr einfach zu vervollständigen und für einen guten ersten Einblick in die Projekte, die grundlegende (und tolle) Idee, die in der Lage sein, zu bauen und Bereitstellung von enterprise-level-Anwendungen mit einer minimalen Konfiguration hochhält, um eine Breite Palette von Spring/JEE gute Praktiken. Ich bin wirklich daran interessiert, mit Spring Boot für test-Projekte, weil Sie so viel einfacher und schneller einzurichten und zu betreiben und immer noch sehr nahe an meiner Produktionsumgebung.
Ich bin derzeit versucht, ein Projekt bauen, um mit Spring-Boot und Primefaces als meinen Blick auf die Technologie der Wahl, aber das setup scheinbar nicht bereit ist out-of-the-box, wie ist der Fall mit Thymeleaf, für die mit dem binären in das classpath ist genug. Ich habe versucht, einschließlich der folgenden gradle/maven-Artefakte, aber ohne Erfolg:

  • primefaces
  • jsf-api
  • jsf-impl
  • el-api

Spring Boot eingebetteten Tomcat-server startet ohne Fehler, aber nach dem Versuch, öffnen Sie eine Seite, wie Sie /Ansicht in einem browser, der embedded-server die folgende Fehlermeldung angezeigt: HTTP Status 500 - Circular view path: would dispatch back to the current handler URL again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

Nach der Suche in verschiedenen Orten, die ich noch nicht finden keine Ressourcen/tutorials, wie man ein solches Projekt.
Hier der Inhalt der my-build.gradle-Datei:

buildscript {
    repositories {
        maven { url "http://repo.spring.io/libs-snapshot" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.0.0.RC4")
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'

idea {
    module {
        downloadJavadoc = true
    }
}

group = 'com.hello'
version = '0.0.1-SNAPSHOT'

repositories {
    mavenCentral()
    mavenLocal()
    maven { url "http://repository.primefaces.org" }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
//   compile ("org.thymeleaf:thymeleaf-spring4")
    compile group: 'org.primefaces', name: 'primefaces', version: '4.0'

    compile group: 'com.sun.faces', name: 'jsf-api', version: '2.2.2'
    compile group: 'com.sun.faces', name: 'jsf-impl', version: '2.2.2'
    compile group: 'javax.el', name: 'el-api', version: '1.0'
}

task wrapper(type: Wrapper) {
    gradleVersion=1.10
}

Meine main-Klasse:

package com.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@EnableAutoConfiguration
@ComponentScan
@Configuration
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

und meine Implementierung von WebMvcConfigurerAdapter:

package com.hello;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("view");
        registry.addViewController("/view").setViewName("view");
    }

}

Zusammen mit meiner view.html Datei (ich habe auch versucht, anzeigen.xhtml), diese sind alle die Dateien, die ich für dieses Projekt erstellt haben, wie ich versucht bin für das minimal-setup.

Wenn jeder sehen kann was ich falsch mache (oder nicht tut überhaupt), Hilfe wäre sehr geschätzt werden.
Brauche ich zusätzliche Dateien/beans JSF-Konfiguration in diesem Fall? Wenn ja, wo und wie sollten solche Dateien?

Diese Frage wurde auch veröffentlicht in der offiziellen Frühling Foren:
http://forum.spring.io/forum/spring-projects/boot/746552-spring-boot-and-jsf-primefaces-richfaces


BEARBEITEN:
Nach wie M. Deinum die Konfigurations-bean für JSF und entfernen der WebMvcConfigurerAdapter definition (bezogen auf Spring MVC), Spring Boot scheint zuordnen-Anforderungen an das FacesServlet Instanz, jetzt bekomme ich die folgende Fehlermeldung:
HTTP Status 500 - Servlet.init() for servlet FacesServlet threw exception

Ursache:

java.lang.IllegalStateException: Could not find backup for factory javax.faces.context.FacesContextFactory

Den code für die neue JsfConfig bean:

package com.hello;

import com.sun.faces.config.ConfigureListener;
import org.springframework.boot.context.embedded.ServletListenerRegistrationBean;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import javax.faces.webapp.FacesServlet;

@Configuration
public class JsfConfig {

    @Bean
    public FacesServlet facesServlet() {
        return new FacesServlet();
    }

    @Bean
    public ServletRegistrationBean facesServletRegistration() {
        ServletRegistrationBean registration = new ServletRegistrationBean(facesServlet(), "*.xhtml");
        registration.setName("FacesServlet");
        return registration;
    }

    @Bean
    public ServletListenerRegistrationBean<ConfigureListener> jsfConfigureListener() {
        return new ServletListenerRegistrationBean<ConfigureListener>(new ConfigureListener());
    }

    @Bean
    public ViewResolver getViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/templates/");
        resolver.setSuffix(".xhtml");
        return resolver;
    }
}
  • Wo ist dein view.html Datei? Vielleicht ist es nicht die Feststellung, dass die Datei? Haben Sie versucht, ändern die Datei-und view-Namen, um etwas anderes, sagen index?
  • Ich machte Kopien von der Datei und versucht die Namensgebung index.htm in der main, main/resources und main/resources/templates (Standard für Thymeleaf) die Verzeichnisse, wenn das der Fall ist, ich könnte fehlt eine gewisse Konfiguration.
InformationsquelleAutor Herick | 2014-03-20
Schreibe einen Kommentar