jsr372-experts@javaserverfaces-spec-public.java.net

[jsr372-experts] Re: Tag to declare and import constants in EL scope

From: Josh Juneau <juneau001_at_gmail.com>
Date: Thu, 23 Jun 2016 11:54:07 -0500

+1

Josh Juneau
juneau001_at_gmail.com
http://jj-blogger.blogspot.com
https://www.apress.com/index.php/author/author/view/id/1866


On Tue, Jun 21, 2016 at 8:00 AM, Bauke Scholtz <balusc_at_gmail.com> wrote:

> +1 for it being enforced into <f:metadata>
>
> Cheers, B
>
> On Tue, Jun 21, 2016 at 2:59 PM, Leonardo Uribe <leonardo.uribe_at_irian.at>
> wrote:
>
>> Hi
>>
>> I see, so it is better if it is set as part of faces-config.
>>
>> Really there is a precedent of a similar tag. In tomahawk there are
>> t:aliasBean and t:aliasBeansScope, which are tags designed to create
>> temporal names for bean that are only valid for child components.
>>
>> This case is just similar, but for constants.
>>
>> Other option I can imagine is make it in the same way f:viewParam in
>> f:metadata works.
>>
>> <f:metadata>
>> <f:importConstants type="com.example.Gender" />
>> </f:metadata>
>>
>> Then f:importConstants add the definition (which is in fact metadata) to
>> UIViewRoot. Since everything inside f:metadata is read before the view is
>> actually populated, things will work fine (but note f:importConstants is
>> enforced to be added inside f:metadata, which has sense).
>>
>> regards,
>>
>> Leonardo Uribe
>>
>>
>> 2016-06-20 20:33 GMT+02:00 Bauke Scholtz <balusc_at_gmail.com>:
>>
>>> I don't think using an annotation is a good idea. Usually models reside
>>> in business/service (EJB) layer and you don't want to have JSF dependencies
>>> over there.
>>>
>>> Cheers, B
>>>
>>> On Mon, Jun 20, 2016 at 3:36 PM, arjan tijms <arjan.tijms_at_gmail.com>
>>> wrote:
>>>
>>>> On Mon, Jun 20, 2016 at 3:24 PM, Bauke Scholtz <balusc_at_gmail.com>
>>>> wrote:
>>>>
>>>>> A faces-config.xml based configuration is a reasonable idea. Perhaps
>>>>> even better.
>>>>>
>>>>
>>>> And/or the upcoming @FacesConfig ;)
>>>>
>>>> Kind regards,
>>>> Arjan Tijms
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>> Cheers, B
>>>>>
>>>>>
>>>>> On Mon, Jun 20, 2016 at 3:14 PM, Leonardo Uribe <
>>>>> leonardo.uribe_at_irian.at> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> Just as a comment, f:importConstants reminds me f:loadBundle, which
>>>>>> was deprecated and replaced by a solution that loads the bundle from the
>>>>>> faces-config.xml files.
>>>>>>
>>>>>> The problem about f:importConstants is how to set up the context
>>>>>> where these constants are available. For example
>>>>>>
>>>>>> <f:importConstants type="com.example.Gender" />
>>>>>>
>>>>>> <h:selectOneMenu value="#{person.gender}">
>>>>>> <f:selectItems value="#{Gender}" />
>>>>>>
>>>>>> <f:ajax ...../>
>>>>>> </h:selectOneMenu>
>>>>>>
>>>>>>
>>>>>> if the ajax is only for the component, f:importConstants can be
>>>>>> ignored and the code will break.
>>>>>>
>>>>>> so, the "challenge" is to find a way to define the EL context
>>>>>> properly.
>>>>>>
>>>>>> In MyFaces there are some EL contexts:
>>>>>>
>>>>>> - page
>>>>>> - template
>>>>>> - view
>>>>>> - global
>>>>>>
>>>>>> Sometimes you want a definition to pass through the template,
>>>>>> sometimes through the view or sometimes just have a global definition for
>>>>>> all your views.
>>>>>>
>>>>>> regards,
>>>>>>
>>>>>> Leonardo Uribe
>>>>>>
>>>>>>
>>>>>> 2016-06-20 14:49 GMT+02:00 Bauke Scholtz <balusc_at_gmail.com>:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> See https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1424
>>>>>>>
>>>>>>> This is a commonly requested feature from the community. Several
>>>>>>> libraries have it implemented such as OmniFaces and PrimeFaces Extensions.
>>>>>>> It would be nice to offer a standard JSF solution such as
>>>>>>> <f:importConstants>. It's relatively trivial to implement.
>>>>>>>
>>>>>>> If there are no objections, I will take it on me.
>>>>>>>
>>>>>>> Cheers, B
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>