Pregunta

Siempre he regresado null Cuando quería que el usuario volviera al mismo página. Por ejemplo, si el usuario solicita editar grupos, pero no tiene acceso a esto, generalmente devuelvo null e imprima algún mensaje de acceso denegado. Si está permitido al usuario, solo devuelve el nombre de la página siguiente, como "Editar".

Por ejemplo,

@ManagedBean(name = "groupController")
@SessionScoped
public class GroupController {

    public String prepareEdit() {
        if (userIsAllowed()) {
            return "Edit";
        } else {
            JsfUtil.addAccessDeniedMessage("Access denied.");
            return null; // return to the same page
        }
    }

    private boolean userIsAllowed() {
        return false; // for testing purpose
    }
}

Cuando vuelva null, la misma página se devuelve al usuario. Hasta aquí todo bien. Pero el problema es que después de 2 solicitudes siempre recibo un NullPointerException como esto:

ADVERTENCIA: StandardWrapPperValve [Faces Servlet]: PWC1406: Servlet.Service () para Servlet Faces Servlet lanzó excepción java.lang.nullpointerexception en com.sun.faces.application.view.StatemanAgementStrategyM .faces.component.uicomponent.invokeonComponent (uicomponent.java:1253) en javax.faces.component.uicomponentbase.invokeoncomponent (uicomponentbase.java:672) en javax.faces.component.uicomponent.invokeoncomconcomconcom javax.faces.component.uicomponentbase.invokeonComponent (uicomponentbase.java:672) en com.sun.faces.application.view.statemanagementstrategyimpl.restoreview (statememanagementstrategyimpl.Java:284) at com.sun.faces.application StatemanagerImpl.java:177) en com.sun.faces.application.view.viewHandlingSingygy.restoreview (vieSHandlingStrategy.java:131) 0) en com.sun.faces.application.view.multiviewhandler.restoreview (multiviewhandler.java:143) en com.sun.faces.lifecycle.restoreviewphase.exeCute (restaureviewphase.Java:199) en com.sun.faces.lifecycle .Phase.dophase (fase.java:101) en com.sun.faces.lifecycle.restoreviewphase.dophase (restaureviewphase.java:110) en com.sun.faces.lifecycle.lifecycleImpl.execute (lifeCycleImpl.Java:118) en javax.faces.webapp.facesservlet.service (facesservlet.java:312) en org.apache.catalina.core.standardwrapper.service (Standardwrappers.java:1523) en org.catalina.core.standardardwrappervalve.invoke (Standardwrappervervalve. java: 279) en org.apache.catalina.core.standardcontextvalve.invoke (StandardContextValve.java:188) en org.apache.catalina.core.standardpipeline.invoke (StandardPipeline.Java:641) en Com.sun.enterprise.webeber .Webpipeline.invoke (webpipeline.java:97) en com.sun.enterprise.web.pesessionLockingStandardPipeline.invoke (PesessionLockingStandardPipeline.java:85) en org.apache.catalina.core.standardhostvalve.i nvoke (StandardHostValve.Java:185) en org.apache.catalina.connector.coyoteadapter.doservice (coyoteadapter.java:332) en org.apache.catalina.connector.coyoteadapter.service (coyoteadapter.java:233) en la coma .enterprise.v3.services.impl.containermapper.service (contenerMapper.java:165) en com.sun.grizzly.http.processortask.invokeadapter (processortask.java:791) en com.sun.grizzly.http.processortask.dopross (Processortask.java:693) en com.sun.grizzly.http.processortask.process (processortask.java:954) en com.sun.grizzly.http.defefaultprotocolfilter.execute (defaultprotocolfilter.Java:170) en com.sun. grizzly.defaultprotocolchain.execuTeproTocolfilter (defaultprotocolchain.java:135) en com.sun.grizzly.defaultprotocolchain.execute (defaultprotOmchain.Java:102) en com.sun.grizzly.defaultprotOcolchain.execute (defaultsprotocolchain. .grizzly.http.httpprotocolchain.execute (httpprotocolchain.java:76) en com.sun.grizzly.protocolchaincontextask.docall (ProtocolchainContextTask.Java:53) A t com.sun.grizzly.selectionKeyContextTask.call (selectionKeyContextTask.java:57) en com.sun.grizzly.contexttask.run (contexttask.java:69) en com.sun.grizzly.util.abstractthreadpool $ trabajador.dowork (abstractthreadpool .java: 330) en com.sun.grizzly.util.abstractthreadpool $ trabajador.run (abstractThreadpool.java:309) en java.lang.thread.run (hilo.java:619)

¿Alguien sabe si es correcto para devolver? null para obtener la misma página? No encontré ninguna especificación.

¿Fue útil?

Solución

Que regresa null está perfectamente bien.

Su problema es causado por algo más. Apuesto a que estás usando una versión muy temprana de Mojarra 2.0 que tiene algunos errores serios en el ahorro de estado parcial. Sugiero actualizar al último 2.0 o incluso 2.1. Puedes encontrarlos todos en Página de inicio de Mojarra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top