从按钮重定向页面

时间:2014-06-04 20:04:53

标签: jsf java-ee oracle-adf jdeveloper

您好我正在尝试使用oracle jdeveloper 12c 开发一个登录页面。我正在使用 JEE 技术和JSF页面。

我想在按下验证按钮后重定向到主页面,但它没有工作,我得到了这个激动:

  

javax.servlet.ServletException:ADF_FACES-60101:Code de statut d' erreur HTTP:404。"

这是我在ejb部分中的身份验证功能

public String authentification(String login, String pwd) {
    try{
        Query query;
        query = em.createQuery("select o from UserEntity o where " 
                + " o.login = :LOGIN AND o.pwd = :PWD");

        query.setParameter("LOGIN",login);
        query.setParameter("PWD",pwd);
        query.getSingleResult();
        return  ("success") ;  
    }
    catch(Exception e){
        e.printStackTrace();
        return null;
    }            
}

这是我在托管bean中的loginaction

public String loginaction() {
    FacesContext ctx = FacesContext.getCurrentInstance();
    HttpServletRequest request =
    (HttpServletRequest)ctx.getExternalContext().getRequest();

    String Url =
    "/adfAuthentication?success_url=/faces/Main.jsf";

    HttpServletResponse response;
    response = (HttpServletResponse) ctx.getExternalContext().getResponse();

    RequestDispatcher dispatcher =
    request.getRequestDispatcher(Url);
    try {
        dispatcher.forward(request, response);
    } catch (IOException e) {
    FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Invalid Username or Password", "Invalid Username or Password");
           ctx.addMessage(null, msg);
    } catch (Exception e) {
          e.printStackTrace();
    }
    return null;
}

ad这是我的jsf

<af:panelFormLayout id="pfl1">
                        <af:inputText value="#{bindings.login.inputValue}" label="#{bindings.login.hints.label}"
                                      required="#{bindings.login.hints.mandatory}"
                                      columns="#{bindings.login.hints.displayWidth}"
                                      maximumLength="#{bindings.login.hints.precision}"
                                      shortDesc="#{bindings.login.hints.tooltip}" id="it1">
                            <f:validator binding="#{bindings.login.validator}"/>
                        </af:inputText>
                        <af:inputText value="#{bindings.pwd.inputValue}" label="#{bindings.pwd.hints.label}"
                                      required="#{bindings.pwd.hints.mandatory}"
                                      columns="#{bindings.pwd.hints.displayWidth}"
                                      maximumLength="#{bindings.pwd.hints.precision}"
                                      shortDesc="#{bindings.pwd.hints.tooltip}" id="it2">
                            <f:validator binding="#{bindings.pwd.validator}"/>
                        </af:inputText>
                        <af:button actionListener="#{bindings.authentification.execute}" text="authentification"
                                   disabled="#{!bindings.authentification.enabled}" id="b1"
                                   action="#{Login2.loginaction}"/>
                    </af:panelFormLayout>

这是我在服务器仪表板中得到的内容

javax.servlet.ServletException: ADF_FACES-60101:Code de statut d''erreur HTTP : 404."
at oracle.adfinternal.view.faces.config.rich.XmlHttpServletResponse._logException(XmlHttpServletResponse.java:141)
at oracle.adfinternal.view.faces.config.rich.XmlHttpServletResponse.sendError(XmlHttpServletResponse.java:107)
at oracle.adfinternal.view.faces.config.rich.XmlHttpServletResponse.sendError(XmlHttpServletResponse.java:101)
at weblogic.servlet.FileServlet.findSource(FileServlet.java:267)
at weblogic.servlet.FileServlet.doGetHeadPost(FileServlet.java:178)
at weblogic.servlet.FileServlet.service(FileServlet.java:160)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:238)
at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:573)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:272)
at view.Login2.loginaction(Login2.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.el.parser.AstValue.invoke(AstValue.java:254)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at org.apache.myfaces.trinidad.component.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:46)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._invokeApplication(LifecycleImpl.java:1083)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:402)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:225)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:192)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:478)
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:478)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:303)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:208)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:137)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:120)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:217)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:81)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:225)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3367)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)

1 个答案:

答案 0 :(得分:0)

从日志中我看到它不仅仅是一个简单的JSF,而是一个基于ADF的应用程序。我可以想到两种方法来实现重定向到页面:
1。您可以在adfc-config.xml(甚至faces-config.xml)文件中定义导航规则,然后只需将此定义规则的名称作为按钮的操作属性值。
 2.如果您希望以编程方式接近,那么您可以调用返回此类字符串"mainPage.jsf?faces-redirect=true"的代码,因为adf会添加自己的上下文。例如:

public String loginaction() { ........ return "mainPage.jsf" + "?faces-redirect=true"; }

注意:您可能需要添加&#34; /faces/mainPage.jsf"或&#34; / faces /.../ mainPage.jsf&#34;代替。这实际上取决于参与导航的两个页面的位置。 根据调度程序部分,它与JSP一起使用。不再需要也不建议使用它。