Bonjour,
Je suis en train de concevoir une application JSF dans laquelle je dispose de divers formulaires (pré-complétés) et d'un tableau (généré en javascript).

Pour le tableau, j'ai besoin de quelques valeurs que je passe via l'url de la page.
Ces infos permettent de lancer des servlets (qui nécessitent lesdites valeurs) qui me fournissent, après des accès DB, les enregistrements à stocker dans le tableau.

Dans cette JSF je possède aussi des formulaires qui me permettent de modifier les enregistrements (ainsi que diverses actions spécifiques à l'application). Ils sont appelés grâce à l'url également (un booléen d'affichage du formulaire qui se remet à false une fois l'opération terminée). Dans ces formulaires, certains choix permettent de définir les valeurs d'autres champs et donc nécessitent un submit supprimant les paramètres de mon url empéchant à mon tableau d'appeler les servlets avec les valeurs nécessaires)

Pour régler ce problème, j'ai un bean en mode session qui contient les informations nécessaires et dans les servlets, j'y fait appel ainsi :

FacesContext context = getFacesContext(request, response);

Application app = context.getApplication();

ValueBinding valB = app.createValueBinding("#{pc_Tableau_GDL}");

Tableau_GDL test = (Tableau_GDL)valB.getValue(context);
Ce qui me permet d'avoir accès aux valeurs contenues dans le bean.

Cela règle le problème, mais de temps à autres, je me retrouve avec une EvaluationException due à un NullPointerException (si j'ai bien compris).
Je pensais que c'était dû au context passé en paramètre, mais à l'aide d'un test en console, je vois que celui-ci n'est pas null avant de passer dans la fonction getValue(context).

Voici le message d'erreur au complet si ça peut aider :

[22/03/11 14:40:04:641 CET] 00000031 ServletWrappe E SRVE0068E: Exception non interceptée émise par une des méthodes de service du servlet : Servlet. Exception : javax.faces.el.EvaluationException: java.lang.NullPointerException
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:170)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:123)
at cndg.gdl.servlet.Servlet.doGet(Servlet.java:52) Seule ligne que je comprenne. Elle indique la ligne contenant : Tableau_GDL test = (Tableau_GDL)valB.getValue(context);
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1146)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:593)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:535)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:764)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1478)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:133)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:450)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:508)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:296)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1551)
Caused by: java.lang.NullPointerException
at com.ibm.ws.webcontainer.srt.SRTServletRequest$SRTServletRequestHelper.access$200(SRTServletRequest.java:2573)
at com.ibm.ws.webcontainer.srt.SRTServletRequest.getAttribute(SRTServletRequest.java:233)
at javax.servlet.ServletRequestWrapper.getAttribute(ServletRequestWrapper.java:127)
at com.sun.faces.context.MyHttpServletRequestWrapper.getAttribute(ExternalContextImpl.java:1006)
at com.sun.faces.context.RequestMap.get(ExternalContextImpl.java:615)
at com.sun.faces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:73)
at com.ibm.faces.databind.SelectItemsVarResolver.resolveVariable(SelectItemsVarResolver.java:38)
at com.ibm.faces.databind.SelectItemsVarResolver.resolveVariable(SelectItemsVarResolver.java:38)
at com.sun.faces.el.impl.NamedValue.evaluate(NamedValue.java:125)
at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:249)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:140)
... 23 more

[22/03/11 14:40:04:641 CET] 00000031 WebApp E [Servlet Error]-[Servlet]: javax.faces.el.EvaluationException: java.lang.NullPointerException
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:170)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:123)
at cndg.gdl.servlet.Servlet.doGet(Servlet.java:52)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1146)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:593)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:535)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:764)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1478)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:133)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:450)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:508)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:296)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1551)
Caused by: java.lang.NullPointerException
at com.ibm.ws.webcontainer.srt.SRTServletRequest$SRTServletRequestHelper.access$200(SRTServletRequest.java:2573)
at com.ibm.ws.webcontainer.srt.SRTServletRequest.getAttribute(SRTServletRequest.java:233)
at javax.servlet.ServletRequestWrapper.getAttribute(ServletRequestWrapper.java:127)
at com.sun.faces.context.MyHttpServletRequestWrapper.getAttribute(ExternalContextImpl.java:1006)
at com.sun.faces.context.RequestMap.get(ExternalContextImpl.java:615)
at com.sun.faces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:73)
at com.ibm.faces.databind.SelectItemsVarResolver.resolveVariable(SelectItemsVarResolver.java:38)
at com.ibm.faces.databind.SelectItemsVarResolver.resolveVariable(SelectItemsVarResolver.java:38)
at com.sun.faces.el.impl.NamedValue.evaluate(NamedValue.java:125)
at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:249)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:140)
... 23 more

[22/03/11 14:40:04:641 CET] 00000031 LocalTranCoor E WLTC0017E: Ressources annulées car la méthode setRollbackOnly() a été appelée.
Je vous remercie d'avance pour vos propositions.