a producer allows to get a shorter/more elegant naming like #{conv.id} if
you @Produces @Named("conv") ;)Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com> 2016-09-28 23:01 GMT+02:00 Mark Struberg <[email protected]>: > Oh boy, sorry for you. You did hit a blank spot in the CDI spec. > > Problem is that the EE umbrella spec, the EL spec and the CDI spec > contradict each other. > > The Weld guys solved this by introducing a Javax class. But that takes > away the whole javax.* tree for the EL. That's just not good as it > contradicts the EL spec. > > Could you please try the following > > @RequestScoped > @Named("conversation") > public class ConversationWrapper { > private @Inject Conversation conv; > > public Conversation get() { > return conv; > } > } > > And in the EL just use #{conversation.get.id} > > LieGrue, > strub > > > > > > On Wednesday, 28 September 2016, 22:12, Xavier Dury <[email protected]> > wrote: > > > I really don't understand how something like <f:param > > name="cid" > > value="#{javax.enterprise.context.conversation.id}"/> actually > > works... something must be made to make the EL processor accept that > invalid > > bean name. > > > > Making a producer which @Produces @Named Conversation conflicts with the > > built-in bean from OWB (with WebBeanType.CONVERSATION)... > > > > ... so, I have done the following for my tests but I feel a bit ashamed > because > > I can't imagine there is no better solution than this ;-) > > > > public class ConversationAliaser { > > public class Javax { > > public Enterprise getEnterprise() {return new Enterprise();} > > > > } > > public class Enterprise { > > public Context getContext() {return new Context();} > > } > > public class Context { > > public Conversation getConversation() {return conversation;} > > > > } > > @Inject > > private Conversation conversation; > > @Produces @ApplicationScoped @Named("javax") > > public Javax javax() {return new Javax();} > > } > > > > But that works! > > > > Xavier > > > > > > > > From: Xavier Dury <[email protected]> > > Sent: Wednesday, September 28, 2016 8:42 PM > > To: [email protected] > > Subject: Re: OpenEJB and EL > > > > Hmmm... I guess I'll have to @Produces @Named the conversation if I want > to > > use it in ELs. I don't know if something like > > #{applicationScope['javax.enterprise.context.conversation'].transient} > > would work? > > > > I remember back in my JSP days that, sometimes, I had to use something > like > > ${requestScope['javax.servlet.forward.request_uri']} instead of > > plain ${javax.servlet.forward.request_uri}. > > > > Xavier > > > > > > From: Romain Manni-Bucau <[email protected]> > > Sent: Wednesday, September 28, 2016 6:54 PM > > To: [email protected] > > Subject: Re: OpenEJB and EL > > > > hmm, wonder if it is linked to the value you try to evaluate (which > doesn't > > respect EL spec even if in CDI spec - don't ask please ;)).. See > > https://issues.jboss.org/browse/CDITCK-462 / > > http://lists.jboss.org/pipermail/cdi-dev/2015-January/006009.html > > > > > > > > > > Romain Manni-Bucau > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > > > > > > Romain Manni-Bucau (@rmannibucau) | Twitter > > twitter.com > > The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) > / > > Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > > https://t.co/0VnvWwbedt . Blog ... > > <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog > > <http://rmannibucau.wordpress.com> | Github > > <https://github.com/rmannibucau> | > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber > > <http://www.tomitribe.com> | JavaEE Factory > > <https://javaeefactory-rmannibucau.rhcloud.com> > > > > 2016-09-28 18:17 GMT+02:00 Xavier Dury <[email protected]>: > > > >> Hi Romain, > >> > >> I tried with org.apache.tomcat:tomcat-jasper-el:8.5.5 but it does not > >> parse my expression until I change ".transient" by > > ".isTransient()" and > >> then it gives the same error: javax.el.PropertyNotFoundException: > >> ELResolver cannot handle a null base Object with identifier > > 'javax'. > >> > >> Does the EL context need something else than adding the > >> BeanManager.getELResolver() to be able to resolve some implicit > objects? I > >> don't understand why it works with ri-1.0. > >> > >> Xavier > >> > >> > >> From: Romain Manni-Bucau <[email protected]> > >> Sent: Wednesday, September 28, 2016 4:02 PM > >> To: [email protected] > >> Subject: Re: OpenEJB and EL > >> > >> Hi Xavier > >> > >> On the phone so hard to give you a link bit try using tomcat el impl of > >> tomcat 8.5 > >> > >> Le 28 sept. 2016 15:29, "Xavier Dury" <[email protected]> > > a écrit : > >> > >> > Hi, > >> > > >> > I am using OpenEJB for my tests and need support for EL expressions > in > > my > >> > own code. > >> > > >> > By default, if I do something like this (pay attention to the > >> expression): > >> > > >> > ExpressionFactory factory = beanManager.wrapExpressionFactory( > >> > ExpressionFactory.newInstance()); > >> > StandardELContext elContext = new StandardELContext(factory); > >> > elContext.addELResolver(beanManager.getELResolver()); > >> > ValueExpression expression = factory.createValueExpression( > elContext, > >> > "#{javax.enterprise.context.conversation.transient}", > > Boolean.class); > >> > expression.getValue(elContext); > >> > > >> > and only add org.apache.tomee:openejb-core:7.0.1 to my project then > I > >> get > >> > javax.el.ELException: Unable to find ExpressionFactory of type: > >> > org.apache.el.ExpressionFactoryImpl > >> > > >> > if I add org.glassfish:javax.el:3.0.0 then I get javax.el. > >> PropertyNotFoundException: > >> > ELResolver cannot handle a null base Object with identifier > > 'javax' > >> > > >> > if I switch the EL library to com.sun.el:el-ri:1.0 (+ > > META-INF/javax.el. > >> ExpressionFactory > >> > < com.sun.el.ExpressionFactoryImpl) then my expression can be > > evaluated > >> > but I can't use any new feature of 3.0 (like lambdas) > >> > > >> > So, either my dependencies are wrong or I am not correctly > > initializing > >> my > >> > factory. > >> > > >> > Does anybody have an idea? > >> > > >> > Thanks, > >> > > >> > Xavier > >> > >> > > >
