+1

means

@RequestScoped

public class ConversationWrapper {
  private @Inject Conversation conv;

  @Produces
  @Dependent
  @Named("conv")

  public Conversation getConv() {
    return conv;
  }
}




On Wednesday, 28 September 2016, 23:10, Romain Manni-Bucau 
<[email protected]> wrote:


>
>
>a producer allows to get a shorter/more elegant naming like #{conv.id} if you 
>@Produces @Named("conv") ;)
>
>
>
>Romain Manni-Bucau
>@rmannibucau |  Blog | Old Wordpress Blog | Github | LinkedIn | Tomitriber | 
>JavaEE Factory
>
>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