Redirection d'une Page JSF [Résolu]

Signaler
-
 omarkalkaf -
Bonjour,
j'essaye de faire une redirection d'une page JSF lors d'un click sur le bouton login... Mais je sais pas comment la faire.. quelqu'un peut m'aider???
j'utilise j2ee sous Jdeveloper
voila ma fonction Login au niveau de sessionEJB
public UserEntity 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);
return
(UserEntity) query.getSingleResult();





}
catch(Exception e){
e.printStackTrace();
return null;
}

}

Mon backing bean est le suivant
 public String loginaction() {

BindingContainer bindings = getBindings();
OperationBinding operationBinding = bindings.getOperationBinding("authentification");
Object result = operationBinding.execute();
if (!operationBinding.getErrors().isEmpty()) {
return "success";
}
return null;
}

Pour la partie faces-config j'ai fait le suivant:

<?xml version="1.0" encoding="windows-1256"?>
<faces-config version="2.1" xmlns="http://java.sun.com/xml/ns/javaee">
<application>
<default-render-kit-id>oracle.adf.rich</default-render-kit-id>
</application>
<navigation-rule>
<from-view-id>/login.jsf</from-view-id>
<navigation-case>
<from-action>#{backing_login.loginaction}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/untitled2.jsf</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
</faces-config>


pour le code de la page login.jsf
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html>
<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:document title="login.jsf" id="d1" binding="#{backingBeanScope.backing_login.d1}">
<af:messages binding="#{backingBeanScope.backing_login.m1}" id="m1"/>
<af:form id="f1" binding="#{backingBeanScope.backing_login.f1}">
<af:panelFormLayout id="pfl1" binding="#{backingBeanScope.backing_login.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="loginfield"
binding="#{backingBeanScope.backing_login.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" binding="#{backingBeanScope.backing_login.it2}">
<f:validator binding="#{bindings.pwd.validator}"/>
</af:inputText>
<af:button text="authentification"
disabled="#{!bindings.authentification.enabled}" id="b1"
binding="#{backingBeanScope.backing_login.b1}"
action="#{backingBeanScope.backing_login.loginaction}"/>
</af:panelFormLayout>
</af:form>
</af:document>
<!--oracle-jdev-comment:auto-binding-backing-bean-name:backing_login-->
</f:view>

6 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Une erreur JBO signifie que le système n'arrive pas à accéder à une propriété de ta page :
JBO-25077: Name {0} not found in the given object: {1}.
Cause: An invalid name was passed in an expression.
Action: Fix the expression by passing in a correct name for a property.
Level: 1

Type: ERROR

Impact: Programmatic

Est ce que tu es certain que d'identifiant /untitled2.jsf existe bien ?

disabled="#{!bindings.authentification.enabled}"
Est ce que tu es certain que tu peux ici utiliser un "!" ? Peut être que oui, ca fait quelques années que je n'ai pas fait de JSF...

Et dans tous les cas, les balises fermantes doivent être précédées d'un esapce :
<redirect />
et là aussi :
action="#{backingBeanScope.backing_login.loginaction}" />
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Salut,

Tout a l'air correct, essayes juste d'ajouter un espcade entre le t et le / dans le redirect pour respecter la syntaxe :
<redirect />


Et les
return null;
, c'est une mauvaise idée

Qu'est ce qui ne marche pas ? Qu'est ce qui se passe ? Que voudrais tu qu'il se passe ?
c'est fait, alors j'ai changer le null par return ("fail")
lorsque j'exécute il m'affiche l'erreur suivante
JBO-25077: Nom id introuvable dans l'objet donné : success.
oui bien sur /untitled2.jsf est ma page cible
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
J'ai beau chercher, je ne trouve pas, et l'erreur n'est pas vraiment documentée sur internet.

Tu peux me donner la trace complète stp ?

Tu as essayé de virer le redirect ?

Et de passer ton scope à request ?
Voila ce que m'affiche sur le console


oracle.jbo.expr.JIEvalException: JBO-25077: Nom id introuvable dans l'objet donné : success.
at oracle.jbo.common.JboBeanUtils.getProperty(JboBeanUtils.java:90)
at oracle.jbo.common.JboBeanUtils.getOrTypePropertyInMapOrBean(JboBeanUtils.java:253)
at oracle.jbo.common.JboBeanUtils.getPropertyInMapOrBean(JboBeanUtils.java:215)
at oracle.adf.model.bean.DCDataRow.getAttributeInternal(DCDataRow.java:381)
at oracle.jbo.server.ViewRowImpl.getKey(ViewRowImpl.java:680)
at oracle.jbo.server.ViewRowCache.addWithCheck(ViewRowCache.java:385)
at oracle.jbo.server.ViewRowCache.add(ViewRowCache.java:410)
at oracle.jbo.server.QueryCollection.addRowToColl(QueryCollection.java:3850)
at oracle.jbo.server.QueryCollection.fetch(QueryCollection.java:3925)
at oracle.jbo.server.QueryCollection.get(QueryCollection.java:2443)
at oracle.jbo.server.ViewRowSetImpl.getRow(ViewRowSetImpl.java:5414)
at oracle.jbo.server.ViewRowSetIteratorImpl.doFetch(ViewRowSetIteratorImpl.java:2986)
at oracle.jbo.server.ViewRowSetIteratorImpl.ensureRefreshed(ViewRowSetIteratorImpl.java:2842)
at oracle.jbo.server.ViewRowSetIteratorImpl.refresh(ViewRowSetIteratorImpl.java:3083)
at oracle.jbo.server.ViewRowSetImpl.notifyRefresh(ViewRowSetImpl.java:3060)
at oracle.jbo.server.ViewRowSetImpl.execute(ViewRowSetImpl.java:1438)
at oracle.jbo.server.ViewRowSetImpl.execute(ViewRowSetImpl.java:1198)
at oracle.jbo.server.ViewRowSetIteratorImpl.ensureRefreshed(ViewRowSetIteratorImpl.java:2825)
at oracle.jbo.server.ViewRowSetIteratorImpl.ensureRefreshed(ViewRowSetIteratorImpl.java:2802)
at oracle.jbo.server.ViewRowSetIteratorImpl.first(ViewRowSetIteratorImpl.java:1631)
at oracle.jbo.server.ViewRowSetImpl.first(ViewRowSetImpl.java:3832)
at oracle.jbo.server.ViewObjectImpl.first(ViewObjectImpl.java:11214)
at oracle.adf.model.binding.DCIteratorBinding.internalGetCurrentRowInBinding(DCIteratorBinding.java:2363)
at oracle.jbo.uicli.binding.JUIteratorBinding.internalGetCurrentRowInBinding(JUIteratorBinding.java:526)
at oracle.adf.model.binding.DCIteratorBinding.getCurrentRow(DCIteratorBinding.java:2308)
at oracle.adf.model.binding.DCIteratorBinding.prepareCurrentRow(DCIteratorBinding.java:682)
at oracle.adf.model.binding.DCIteratorBinding.setupRSIstate(DCIteratorBinding.java:866)
at oracle.adf.model.binding.DCIteratorBinding.refreshControlAndNotifyDCE(DCIteratorBinding.java:723)
at oracle.adf.model.binding.DCIteratorBinding.rangeRefreshed(DCIteratorBinding.java:928)
at oracle.jbo.uicli.binding.JUMethodIteratorDef$JUMethodIteratorBinding.initSourceRSI(JUMethodIteratorDef.java:727)
at oracle.adf.model.binding.DCIteratorBinding.callInitSourceRSI(DCIteratorBinding.java:1741)
at oracle.jbo.uicli.binding.JUMethodIteratorDef$JUMethodIteratorBinding.access$000(JUMethodIteratorDef.java:119)
at oracle.jbo.uicli.binding.JUMethodIteratorDef$JUMethodIteratorBinding$1.afterInvokeMethod(JUMethodIteratorDef.java:262)
at oracle.adf.model.binding.DCInvokeMethod.notifyAfterInvokeMethod(DCInvokeMethod.java:918)
at oracle.adf.model.binding.DCInvokeMethod.callMethod(DCInvokeMethod.java:281)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1658)
at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2189)
at oracle.adf.model.bean.DCBeanDataControl.invokeOperation(DCBeanDataControl.java:560)
at oracle.adf.model.adapter.AdapterDCService.invokeOperation(AdapterDCService.java:309)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:751)
at oracle.adf.controller.v2.lifecycle.PageLifecycleImpl.executeEvent(PageLifecycleImpl.java:407)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding._execute(FacesCtrlActionBinding.java:255)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding.execute(FacesCtrlActionBinding.java:213)
at view.backing.Login.loginaction(Login.java:112)
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.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:202)
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)