2012-03-27 2 views
1

아래에 붙여 넣은 코드는 명령 단추 (JSP에서 JSF 구성 요소)가있는 단순한 JSF 프로그램으로, 클릭하면 관리되는 bean에 쓰여진 메시지가 표시되고 다시 돌아와야합니다. JSP로 메시지를 표시하십시오.간단한 JSF 실행

**perfectJSP.jsp** 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Test Page</title> 
</head> 
<body> 
<f:view> 
<h:form> 
    <h:commandButton value="Click" actionListener="#{Test.clicked}"></h:commandButton> 
</h:form> 
</f:view> 
<h3> This brings us to the end of the program </h3> 
</body> 
</html> 

**Test** (managed bean) 
import javax.faces.event.*; 
public class Test { 
public void clicked(ActionEvent ae) 
{ 
    System.out.println("This is from the bean class"); 
} 
} 

**web.xml** 

<servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class> 
     javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet> 
     <servlet-name>faces</servlet-name> 
     <servlet-class> 
     org.apache.myfaces.webapp.MyFacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>faces</servlet-name> 
     <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>faces</servlet-name> 
     <url-pattern>*.faces</url-pattern> 
    </servlet-mapping> 

**faces-config.xml** 


<faces-config> 
<managed-bean> 
<managed-bean-name>Test</managed-bean-name> 
<managed-bean-class>Test</managed-bean-class> 
<managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 
</faces-config> 

JBoss는 사용 된 응용 프로그램 서버입니다. 출력이 생성되지 않는 이유를 알 수 없습니다.

답변

1

보통 서버 로그에서 끝나는 표준 출력에 메시지를 인쇄하고 있습니다. 이것은 클라이언트가 검색해야하는 HTML 응답으로 끝나지 않습니다.

  • 사용 FacesContext#addMessage()<h:messages/>과 : 제출 JSF 양식에 어떤 메시지를 표시하려면

    는 여러 가지 방법이 있습니다. 예 : 메시지를 사용할 때마다

    public void clicked() { 
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("This is from the bean class")); 
    } 
    
  • <h:form> 
        <h:commandButton value="Click" action="#{Test.clicked}" /> 
        <h:messages /> 
    </h:form> 
    

    는 조건부 구성 요소를 렌더링합니다. 예 :

    private String message; 
    
    public void clicked() { 
        message = "This is from the bean class"; 
    } 
    
    public String getMessage() { 
        return message; 
    } 
    

<h:form> 
    <h:commandButton value="Click" action="#{Test.clicked}" /> 
    <h:outputText value="#{Test.message}" rendered="#{not empty Test.message}" /> 
</h:form> 

은 또한, 사용자의 관리 빈 클래스는 패키지에 있지 않습니다. 이것은 절대 권장되지 않습니다. 다른 Java 클래스가 액세스 할 수 있어야하는 Java 클래스는 패키지에 있어야합니다. 구체적인 문제에


관련없는 : 당신이 JSP와 협력하고 거의 250 년 전에 JSF 2.0부터 사용되지 않습니다 간주됩니다. JSP는 Facelets에 의해 계승되었습니다. 최신 JSF 서적/자습서를 읽고 있는지 확인하십시오. our JSF wiki page도 참조하십시오.

관련 문제