2009-10-11 2 views
0

간단한 웹 응용 프로그램에서 jsp와 jsp (학교 과제)를 결합해야합니다. NetBeans 6.7.1을 사용하고 있습니다.JSF/JSP 혼합 문제

<html> 
<body> 
    <form name="form" method="post" action="processuserinfo.jsp" > 
     UserName: <input type="text" name = "username" value=""><br> 
     Password: <input type="password" name="userpassword" value=""><br> 
     <input type="submit" name="submit" value="Login"> 
    </form> 
</body> 
</html> 
</body> 

processuserinfo.jsp :

<%@page import="java.util.*" %> 
<jsp:useBean id="idhandler" class="dsassignment1java.LoginManager" scope="session"> 
<jsp:setProperty name="idhandler" property="*"/> 
</jsp:useBean> 
<% idhandler.validateUser(session, pageContext); %> 

그러나,이 방법 validateUser 결코이 호출되는 내 로그인 페이지에서 나는 다음과 같은 코드가 있습니다. faces-config.xml에 정의 된 탐색 규칙과 관련이 있다고 가정하지만 규칙을 올바르게 설정하는 방법을 모르겠습니다. 나는이 같은 규칙을 정의하기 위해 시도했다 :

<navigation-case> 
     <from-outcome>goProcessUserInfo</from-outcome> 
     <to-view-id>/processuserinfo.jsp</to-view-id> 
    </navigation-case> 

를 내 양식에 대한 작업으로 goProcessUserInfo을 지정했지만 작동하지 않습니다.

답변

4

어떤 식 으로든 JSF를 사용하지 않습니다. JSF 태그를 포함하지 않는 JSP를 호출하는 일반 HTML 페이지입니다.

는 JSF JSP로 로그인 페이지를 재구성하려면 이런 식으로 뭔가를 작성할 수 있습니다

<?xml version="1.0" encoding="UTF-8" ?><jsp:root 
    xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"><jsp:directive.page 
    language="java" 
    contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8" /><jsp:text><![CDATA[<?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"> ]]> 
    </jsp:text> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    </head> 
    <body> 
    <f:view> 
    <h:form> 
     user: <h:inputText value="#{idhandler.username}" /><br /> 
     pw: <h:inputText value="#{idhandler.password}" /><br /> 
     <h:commandButton value="login" action="#{idhandler.validateUser}" /> 
    </h:form> 
    </f:view> 
    </body> 
    </html> 
</jsp:root> 

이 두 텍스트 입력 컨트롤과 버튼을 포함하는 폼 컨트롤과 JSF 뷰를 정의합니다. 입력 및 단추는 관리 빈에 바인드됩니다. 관리되는 빈은 다음과 같습니다

public class LoginManager { 
    private String username; 
    private String password; 

    public String getUsername() { return username; } 
    public void setUsername(String username) { this.username = username; } 

    public String getPassword() { return password; } 
    public void setPassword(String password) { this.password = password; } 

    public String validateUser() { 
    // TODO: check login details 
    boolean authenticated = true; 
    return authenticated ? "goProcessUserInfo" : "errorPage"; 
    } 
} 

validateUser 메소드의 반환 값은 탐색 케이스의 <from-outcome> 일치에 사용됩니다. 관리되는 콩은 faces-config.xml에 정의된다 :

<managed-bean> 
    <managed-bean-name>idhandler</managed-bean-name> 
    <managed-bean-class>dsassignment1java.LoginManager</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
    </managed-bean> 

를 참고하시기 바랍니다 : JSF 응용 프로그램을 작성하는 경우, 당신은 어떤 표준 액션을 사용합니다 (http://java.sun.com/JSP/Page 네임 스페이스에 jsp:... 태그), 보통 JSTL 태그를 피하기 (<c:... 태그를 최소화 http://java.sun.com/jsp/jstl/... 네임 스페이스). 절대로 스크립틀릿 (<% ... %>보기 내장 코드)을 사용하지 마십시오.

자세한 내용은 JEE5 tutorialJavaServer Faces section을 참조하십시오.