Çevre:Bahar Boot MTU Entegrasyon
Tomcat 8
Bahar Boot 1.5
MTU 2.2
Apaçi MyFaces
Bahar MVC
Kodu:
Spring Boot ve JSF 2.2'yi Servlet 3.0 ortamında bütünleştiriyorum.
Yapılandırma Sınıflar:
JSFConfig.java - JSF için Yapılandırma.@Configuration
@ComponentScan({"com.atul.jsf"})
public class JSFConfig {
@Bean
public ServletRegistrationBean servletRegistrationBean() {
FacesServlet servlet = new FacesServlet();
return new ServletRegistrationBean(servlet, "*.jsf");
}
}
Bahar Boot Ana Sınıfı:
@SpringBootApplication
@Import({ // @formatter:off
JPAConfig.class,
ServiceConfig.class, // this contains UserServiceImpl.java class.
WebConfig.class,
JSFConfig.class,
})
public class SpringbootJpaApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(SpringbootJpaApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringbootJpaApplication.class);
}
}
Yönetilen Fasulye:
UserBean.java - JSF için Bean Yönetilen
@ManagedBean
@SessionScoped
public class UserBean implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
@ManagedProperty(value="#{userServiceImpl}")
private UserServiceImpl userServiceImpl;
public void addUser(){
System.out.println("User Gets added "+this.name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public UserServiceImpl getUserServiceImpl() {
return userServiceImpl;
}
public void setUserServiceImpl(UserServiceImpl userServiceImpl) {
this.userServiceImpl = userServiceImpl;
}
}
Facelets:
home.xhtml - ana sayfa
<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>JSF 2.0 Hello World</title>
</h:head>
<h:body>
<h2>JSF 2.0 Hello World Example - hello.xhtml</h2>
<h:form>
<h:inputText value="#{userBean.name}"></h:inputText>
<h:commandButton value="Submit" action="#{userBean.addUser}"></h:commandButton>
</h:form>
</h:body>
</html>
yüzler-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
<lifecycle>
<phase-listener>org.springframework.web.jsf.DelegatingPhaseListenerMulticaster</phase-listener>
</lifecycle>
</faces-config>
Sayı
: Benhome.xhtml , userBean.addUser
formu gönderdiğinde
1) çağrılır. 2) userBean.name
, kullanıcı tarafından girilen değerlerle ayarlanır. 3) Ancak userServiceImpl
NULL'dir. 4) Bu, Spring ve JSF'nin entegre edilmediği anlamına mı geliyor? Ben de
faces-config.xml
Ben de UserBean.java tüm JSF özgü açıklamaları çıkarmadan çalıştı belirtilen ve aşağıda gibi belirli ek açıklamaları Bahar sadece kullanıldığı gibi SpringBeanFacesELResolver
kayıt yaptıran -
@Component
@SessionScoped
public class UserBean implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
@Autowired
private UserServiceImpl userServiceImpl;
}
Ama formu göndermek, ben hedef alıyorum #{userBean)
için erişilemiyor. Bu userBean
İlkbahar
için keşfedilemez anlamına gelir. 5) Burada bir şey eksik miyim?
1. Servlet kaydı
MTU Servlet'dir Kayıt ve yapılandırmak: Ben Bahar Boot
Xtreme Biker Eğer JSF ek açıklamalar işe gitmek için bir yol bulmak mı? belki ilkbahar 2.0 ile mi? –
Hayır, ama bu cevabı yazdığımdan beri çok fazla kazmadım. Burada fasulyelerinizi yöneten Spring olduğu için, @Component olarak tekil sayılar üreten bir ek açıklama deneyebilirsiniz. –