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
> >>
> >>
> >
>

Reply via email to