sergionni
sergionni

Reputation: 13510

JSF:pass real locale parameter to resourceBundle call instead of default null

There is quit non-trivial menu on UI. Its items named in loop this way:

loop start

<li>
<h:commandLink action="#{menuItem.getGlobalTransitionName()}">#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}
</h:commandLink>
</li>

loop end

call to resourceBundle performed above,where default locale is set - it's hardcoded to null value,so resolved to En always:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}

What I've tried:

1. this invokes parsing error:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,${externalContext.locale})}

2. this invokes error as well:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,#{resourceBundle.locale})}

how can I pass really used locale there?

Upvotes: 1

Views: 507

Answers (1)

BalusC
BalusC

Reputation: 1108537

Nesting EL expressions is indeed invalid. Don't do that. Plus, ExternalContext doesn't have a getLocale() method. You want to use #{facesContext.viewRoot.locale} instead.

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,facesContext.viewRoot.locale)}

Upvotes: 1

Related Questions