我尝试将JSF与Spring集成,因此我的代码非常简单:
Manged Bean
@ManagedBean(name = "userData")
@SessionScoped
public class UserData implements Serializable {
private static final long serialVersionUID = 1L;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getGreetingMessage(){
return getMessage();
}
}
的applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="messageService" class="test.UserData">
<property name="message" value="Hello World" />
</bean>
</beans>
Web.xml中
<!-- Add Support for Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
faces-config.xml中
<?xml version="1.0"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<!-- SpringBeanFacesELResolver -->
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
</application>
</faces-config>
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:h="http://java.sun.com/jsf/html">
<h:head>
<title>Spring with JSF</title>
</h:head>
<h:body>
#{userData.greetingMessage}
</h:body>
</html>
问题,当我运行home.xhtml我没有得到按摩的价值! 它只显示空白页面。它似乎无法从ApplicationContext.xml获取message属性的值。
我的方法有什么问题以及如何解决?
答案 0 :(得分:0)
由于您让Spring使用SpringFacesELResolver管理JSF bean,因此不需要JSF注释。
public class UserData implements Serializable {
private static final long serialVersionUID = 1L;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
并且,在 applicationContext.xml 中(注意session scope):
<bean id="userData" class="test.UserData" scope="session">
<property name="message" value="Hello World" />
</bean>
以这种方式访问:
<?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:h="http://java.sun.com/jsf/html">
<h:head>
<title>Spring with JSF</title>
</h:head>
<h:body>
#{userData.message}
</h:body>
</html>
如果正确配置了JSF servlet,应该提供 Hello World HTML输出。