Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSF & динамическое значение из bundle, Получить значение из бандла EL-ом 
V
    Опции темы
MisterCleric
Дата 20.10.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Привет, господа!
Давно я вопросы тут не задавал...
Ну да ладно - поехали.

Собственно есть страничка на JSF.  что-то типа такого:
dataTable, который рисует строки по результату запроса, т.е. перебирает колекцию.
И в одной из колонок мне нужно нарисовать динамический текст.
Вот
Код

<h:outputText value="#{_statistics.criteriaType > 2 ? _statistics.criteriaName : bundle.criterion + _statistics.criteriaType}"/>


Т.е. первые две три строки у меня имеют локализованное название в этой колонке:

Код

criterion0=Всего                   
criterion1=Ручная обработка        
criterion2=Автоматическая обработка


и как мне сформировать вот в том тернарном операторе динамическое значение ключа? 
Вот на остальных фреймворках получалось это просто... А как в JSF? Не хочется писать java-код


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
sidslog
Дата 20.10.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006
Где: Москва

Репутация: нет
Всего: нет



Если Tomahawk используете, там есть t:buffer
Код

                <t:buffer into="#{key}">
                    <h:outputText value="criterion.#{_statistics.criteriaType}"  />
                </t:buffer>

В #{key} будет нужная строка
PM MAIL ICQ GTalk   Вверх
MisterCleric
Дата 20.10.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Цитата

Если Tomahawk


не-а - richfaces


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
sidslog
Дата 20.10.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006
Где: Москва

Репутация: нет
Всего: нет



Ну для richfaces придется подождать

https://jira.jboss.org/jira/browse/RF-724?p...action_12413788

Можете пока подключить tomahawk как временную меру, либо в el заменить 

Код

: bundle.criterion + _statistics.criteriaType


на 

Код

: (_statistics.criteriaType == 0 ? bundle.criterion1 : (...))


PM MAIL ICQ GTalk   Вверх
MisterCleric
Дата 20.10.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Цитата

Ну для richfaces придется подождать


Супер! Тянет на плюс. Ну.... само высказывание
мне, кажется, или другие должны быть решения. Или все-таки придется данную логику зашить на уровне метода в классе.
Недавно читал книгу по SEAM. так вот не обратил внимание как там усе на этих EL-ах работает.
Надо еще поковырять в сторону JSTL...


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
powerOn
Дата 21.10.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



а если rendered посмотреть? правда если строк 50, то будет не очень красиво smile

Код

<h:outputText rendered="#{_statistics.criteriaType > 2}"   value="#{_statistics.criteriaName}""/>
<h:outputText rendered="#{_statistics.criteriaType == 0}" value="#{bundle.criterion0 + _statistics.criteriaType}"/>
<h:outputText rendered="#{_statistics.criteriaType == 1}" value="#{bundle.criterion1 + _statistics.criteriaType}"/>
<h:outputText rendered="#{_statistics.criteriaType == 2}" value="#{bundle.criterion2 + _statistics.criteriaType}"/>



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
MisterCleric
Дата 21.10.2009, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



powerOn,

вот как раз проблема в том, что  такое выражение
Цитата

#{bundle.criterion0 + _statistics.criteriaType}

не рабоает...


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
sidslog
Дата 21.10.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006
Где: Москва

Репутация: нет
Всего: нет



MisterClericpowerOn видимо имел в виду

Код

<h:outputText rendered="#{_statistics.criteriaType > 2}"   value="#{_statistics.criteriaName}""/>
<h:outputText rendered="#{_statistics.criteriaType == 0}" value="#{bundle.criterion0}"/>
<h:outputText rendered="#{_statistics.criteriaType == 1}" value="#{bundle.criterion1}"/>
<h:outputText rendered="#{_statistics.criteriaType == 2}" value="#{bundle.criterion2}"/>


PM MAIL ICQ GTalk   Вверх
MisterCleric
Дата 21.10.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Не, ребятя, все это клево. Но не годится. Наверное буду читать бандл в методе. Т.е. все показанную логику инкапсулирую на уровне метода бина. Хотя это идет в разрез логики, так как вот этот _statistics - это сущность, которая достаеться из базы...


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
MisterCleric
Дата 22.10.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Привет.
Итого решение пришлось реализовывать в java-класса. Вышло так:
Код

public class StatisticsBean implements Serializable {

    @Autowired
    private SessionFacade sessionFacade;

    @Autowired
    private CommonBean commonBean;

    private ResourceBundle bundle;

    private Date dateFrom;
    private Date dateTo;

    private List<Statistics> statisticsList;


    @PostConstruct
    public void init() {
        Locale currentLocale = new Locale(commonBean.getLocale());
        bundle = ResourceBundle.getBundle("LocalizationResources", currentLocale);
        dateTo = new Date();
        Calendar now = Calendar.getInstance();
        now.add(Calendar.MONTH, -1);
        dateFrom = now.getTime();
    }

    public void getStatistics() {
        statisticsList = sessionFacade.getStatisticsByPeriod(dateFrom, dateTo);
        localizeCriterionNames(statisticsList);
    }

    private void localizeCriterionNames(List<Statistics> statisticsList) {
        for (Statistics statistics : statisticsList) {
            String localizedName = getStringOrNull(bundle, "criterion" + statistics.getCriteriaType());
            if (localizedName != null) {
                statistics.setCriteriaName(localizedName);
            }
        }
    }

    private String getStringOrNull(ResourceBundle bundle, String key) {
        try {
            return bundle.getString(key);
        }
        catch (MissingResourceException ex) {
            // Assume key not found
            // -> do NOT throw the exception to allow for checking parent message source.
            return null;
        }
    }

}



--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
MisterCleric
Дата 22.10.2009, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Итого, наверное, тема закрыта.
Хотя такой маленький вопрос: 
нету ли у JSF какого-нибудь TextProvide или MessageSource
А то как-то бедновато выходит читать напрямую ResourceBundle ...


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1053 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.