JSF

2016-08-12 5 views
0

나는 봄과 JSF를 통합하려고, 그래서 아주 간단한 코드가 함께 봄 속성 값을 확인할 수 없습니다 : ApplicationContext.xmlJSF

<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> 

manged했던 콩

@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(); 
    } 
} 

을 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> 

얼굴-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 나는 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> 

문제는, 내가 마사지의 가치를 얻을하지 않습니다! 빈 페이지 만 표시합니다. ApplicationContext.xml에서 message 속성의 값을 가져올 수없는 것 같습니다.

내 방법이 잘못되어 어떻게 해결할 수 있습니까?

답변

0

SpringFacesELResolver을 사용하여 JSF 빈을 Spring이 관리하게하므로 JSF 주석이 필요하지 않습니다.

<?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> 

안녕하세요 HTML 출력을 제공해야합니다 : 이런 식으로 접근

<bean id="userData" class="test.UserData" scope="session"> 
    <property name="message" value="Hello World" />   
</bean> 

:

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 주)을 JSF 서블릿이 제대로 구성되었는지 확인하십시오.

+0

답변 해 주셔서 감사합니다. JSF 빈 클래스 대신 applicationContext.xml에서 sessionCope를 사용하는 경우에만 수정되었습니다. ?? 또는 # {userData.getMessage}를 항상 사용해야한다는 것을 의미합니다 (getter) ?? –

+0

@ R.Almoued getter는 오타였습니다. JSF가 아닌 Spring 빈을 참조해야한다는 뜻입니다. JSF가 아닌 빈을 관리하도록합니다. –

+1

귀하의 솔루션에 대해 감사드립니다. –