पर्यावरण:स्प्रिंग बूट JSF एकता
बिलाव 8
स्प्रिंग बूट 1,5
JSF 2,2
अपाचे MyFaces
वसंत MVC
कोड:
+०१२३५१६४१०६१मैं सर्वलेट 3.0 पर्यावरण में स्प्रिंग बूट और जेएसएफ 2.2 को एकीकृत कर रहा हूं।
कॉन्फ़िग क्लास:
JSFConfig.java - JSF के लिए कॉन्फ़िग।
@Configuration
@ComponentScan({"com.atul.jsf"})
public class JSFConfig {
@Bean
public ServletRegistrationBean servletRegistrationBean() {
FacesServlet servlet = new FacesServlet();
return new ServletRegistrationBean(servlet, "*.jsf");
}
}
स्प्रिंग बूट मुख्य वर्ग:
@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);
}
}
प्रबंधित बीन:
UserBean.java - JSF के लिए प्रबंधित बीन
@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 - होम पेज
<?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>
चेहरे-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>
मुद्दा:
1) कहा जाता हो जाता है जब मैं home.xhtml , userBean.addUser
में फ़ॉर्म सबमिट करें। 2) userBean.name
उपयोगकर्ता द्वारा दर्ज किए गए मानों के साथ सेट हो जाता है। 3) लेकिन userServiceImpl
शून्य है। 4) क्या इसका मतलब है कि वसंत और जेएसएफ एकीकृत नहीं हो रहा है? मैं भी रूप में
faces-config.xml
मैं भी UserBean.java से सभी JSF विशिष्ट एनोटेशन को दूर करने की कोशिश की में उल्लेख किया है और केवल इस्तेमाल किया नीचे जैसे विशिष्ट एनोटेशन स्प्रिंग पंजीकृत किया है SpringBeanFacesELResolver
-
@Component
@SessionScoped
public class UserBean implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
@Autowired
private UserServiceImpl userServiceImpl;
}
लेकिन जब मैं फ़ॉर्म सबमिट करेंगे, मैं #{userBean)
के लिए लक्ष्य पहुंचने योग्य त्रुटि प्राप्त कर रहा हूं। इसका मतलब है userBean
वसंत
5) क्या मुझे यहां कुछ याद आ रही है?
1. सर्वलेट पंजीकरण
JSF सर्वलेट रजिस्टर और यह कॉन्फ़िगर करें: 6) मैं वसंत बूट
Xtreme बाइकर आप JSF एनोटेशन काम करने के लिए प्राप्त करने के लिए एक तरह से पता चला? शायद स्प्रिंग बूट 2.0 के साथ? –
नहीं, लेकिन मैंने इस जवाब को लिखने के बाद बहुत अधिक खोद दिया है। चूंकि यह वसंत है कि आप अपने सेम का प्रबंधन कर रहे हैं, आप कुछ एनोटेशन जेनरेटिंग सिंगलेट्स को @ कॉम्पोनेंट के रूप में देख सकते हैं। –