2017-05-19 1 views
1

ejb를 통해 jsf 리다이렉션이 붙어서 문제를 발견하지 못한 채로 문제를 찾는데 하루를 보내고 있습니다.actionListener를 통한 리디렉션이 작동하지 않습니다.

EJB에서 작업을 실행하고 결과에 따라 사용자를 다른 페이지로 리디렉션합니다. 함수가 에러없이 작동한다고 확신합니다. 결과를 디버그 모드로 따릅니다.

이미 다른 프로젝트에서 같은 방식으로 리디렉션을 수행했으나 여기서는 작동하지 않습니다. 물론 동일한 문제가있는 매우 기본적인 기능을 만들었습니다.

그냥 내가 테스트 EJB했던 기능 테스트 :

:

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:p="http://primefaces.org/ui"> 

    <h:head> 
     <f:facet name="first"> 
      <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
      <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/> 
      <meta name="apple-mobile-web-app-capable" content="yes" /> 
     </f:facet> 
     <title>PrimeFaces Omega</title> 
    </h:head> 

    <h:body styleClass="login-body"> 
     <p:commandButton value="test" actionListener="#{testController.redirection()}"/> 
     </h:body> 
</html> 

이은 web.xml의 설정입니다 :

@Named 
@SessionScoped 
public class testController implements Serializable{ 
    public String redirection(){ 
     return "login.xhtml"; 
    } 
} 

와 나는 fonction를 사용하려고 어디

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" 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-app_3_0.xsd"> 
    <welcome-file-list> 
     <welcome-file>login.xhtml</welcome-file> 
    </welcome-file-list> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <!-- JSF mapping --> 
    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <!-- Map these files with JSF --> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.faces</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 
    <context-param> 
     <param-name>primefaces.THEME</param-name> 
     <param-value>omega</param-value> 
    </context-param> 
    <context-param> 
     <param-name>primefaces.FONT_AWESOME</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <mime-mapping> 
     <extension>ttf</extension> 
     <mime-type>application/font-sfnt</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>woff</extension> 
     <mime-type>application/font-woff</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>woff2</extension> 
     <mime-type>application/font-woff2</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>eot</extension> 
     <mime-type>application/vnd.ms-fontobject</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>eot?#iefix</extension> 
     <mime-type>application/vnd.ms-fontobject</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>svg</extension> 
     <mime-type>image/svg+xml</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>svg#exosemibold</extension> 
     <mime-type>image/svg+xml</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>svg#exobolditalic</extension> 
     <mime-type>image/svg+xml</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>svg#exomedium</extension> 
     <mime-type>image/svg+xml</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>svg#exoregular</extension> 
     <mime-type>image/svg+xml</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>svg#fontawesomeregular</extension> 
     <mime-type>image/svg+xml</mime-type> 
    </mime-mapping> 
</web-app> 

로그 파일을보고 내 기능이 오류없이 작동하지만 인덱스 페이지로 리다이렉트해야하는 위치 이온은 페이지에 머문다.

누군가가 도움을 얻을 수 있습니까?

+2

:

약간의 트릭을 할해야 코드를 변경? – Bonifacio

+0

@Kukeltje 예, 학생 인 것처럼 내가하고있는 일입니다. 초보자를 환영하지 않습니까? Return "login.xhtml"은 리디렉션이 아닙니다. 나는 이것이 https://maxkatz.org/2009/09/18/learning-jsf2-navigation/에 따른 암시 적 리디렉션이라고 생각한다. 내가 한 짓을했다 – Ersch

+0

@ 보니파시오 나는 똑같은 문제를 시도했지만 동일한 문제를 시도했다. – Ersch

답변

1

구성 요소 은 리디렉션 매개 변수를 명시 적으로 첨부하지 않고 일반 문자열 만 사용하여 동작 리디렉션을 지원하지 않습니다.

동작을 사용하여 리디렉션하려는 경우 문자열에 URL 매개 변수로 faces-redirect=true을 포함해야합니다.

대신 "의 actionListener"의에서 "조치"를 리디렉션 방법을 호출 할 수
public String redirection(){ 
    return "login.xhtml?faces-redirect=true"; 
} 
+0

OP가 가장 올바른 방법을 사용하고 있지 않다는 것에 동의하지만, 패턴을 따라야 만 우리는 너무 많은 복잡성을 만들어 내고 시동기에 대한 학습 곡선을 훨씬 더 넓힐 것입니다. 나는 이것을 눈 감아 야한다고 말하는 것이 아니지만 때로는 쉬운 수정으로 복잡한 튜토리얼 이상의 것을 도울 수있다. – Bonifacio

+0

내가 동의하지 않는다. 그래서 내가 튜토리얼에서 '오프 주제'라고 말했지 만 첫 번째 줄에 상태가'p : commandButton'이 아니기 때문에 실제로는 완전히 정확하지는 않지만' h : commandButton '을 선택하십시오. 그리고'p \ h : commandLink'에 대해서. 그리고 '복제물'을 참조함으로써 더 많은 정보가 있으며, 포스터는 해결책을 제공하는 대신 배울 수 있습니다 (수정 방법을 배우는 대신 물고기 제공). (이 질문을 표시 한 복제본 참조) – Kukeltje

+1

도움을 주셔서 감사합니다. 이제 동작을 변경하고? faces-redirect = true를 추가하여 작동합니다. 나는 용어가 더 좋을 수 있지만 영국에 두는 것은 나의 어머니의 랭이 아니라는 것에 동의한다. – Ersch

관련 문제