Навигация по страницам JSF не работает - PullRequest
0 голосов
/ 13 февраля 2011

У меня есть следующие правила навигации, определенные в face-config.xml.Я могу перейти на вторую страницу, но со второй страницы на первую я не могу перейти.В чем может быть причина, что-то не так с правилами навигации?Я хотел бы сделать навигацию без перенаправления.

JSF версия 1.1

 <navigation-rule>
        <from-view-id>/first.jspx</from-view-id>
        <navigation-case>
        <from-action>#{bean.setSelectedItem}</from-action>
            <from-outcome>form1</from-outcome>
            <to-view-id>/second.jspx</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/second.jspx</from-view-id>
        <navigation-case>
            <from-action>#{bean2.testBack}</from-action>
            <from-outcome>form2</from-outcome>
            <to-view-id>/first.jspx</to-view-id>
        </navigation-case>
    </navigation-rule>

Из firebug я мог видеть следующее исключение

java.lang.RuntimeException: no message available

Спасибо

Обновление 1

Код в моем second.jspx для возврата назад к first.jspx

<ice:form id="form2">     
    <ice:commandLink action="#{bean.testBack}">
        <h:outputText value="Test" />
</ice:commandLink>
</ice:form>

Код при нажатии на действие

public String testBack() {

    try {            
        logger.info("invoked");      

    }
    catch (Exception e) {
        e.printStackTrace();
    }
        return "form2";
        }

Stacktrace

java.lang.RuntimeException: no message available
    at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:173)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:719)
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376)
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:870)
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451)
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:218)
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:119)
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
    at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
    at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:230)
    at oracle.oc4j.network.ServerSocketAcceptHandler.access$800(ServerSocketAcceptHandler.java:33)
    at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:831)
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
    at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.NullPointerException
    at com.icesoft.faces.context.DOMResponseWriter.enhanceAndFixDocument(DOMResponseWriter.java:315)
    at com.icesoft.faces.context.DOMResponseWriter.endDocument(DOMResponseWriter.java:186)
    at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:496)
    at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:153)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
    at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:16)
    at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:114)
    at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:66)
    at com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:28)
    at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
    at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:160)
    at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$1.service(SessionDispatcher.java:42)
    at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:18)
    at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:63)
    at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:62)
    at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:22)
    at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:153)

1 Ответ

4 голосов
/ 19 февраля 2011

вы можете попробовать это: (Я скопировал это из моего проекта, поэтому, пожалуйста, измените значения ;-))

<navigation-rule>
        <from-view-id>/pages/registration.jspx</from-view-id>
        <navigation-case>
            <from-outcome>next</from-outcome>
            <to-view-id>/pages/registration.jspx</to-view-id>
        </navigation-case>
<navigation-rule>

или есть какая-то конкретная причина, по которой вы используете этот тег?

<from-action>#{bean.setSelectedItem}</from-action>
...