2016-05-16 3 views
2

У меня есть три страницы с тремя названиями таблеток.Глобальный пакет ресурсов в Struts2 - передовые методы гранулярности?

Page 1 вкладка Имя Название: Page One: Привет: Привет

Page 2 Вкладка Имя Название: Page Two: Привет: Привет

Page 3 Вкладка Имя Название: Страница 3: Привет: Привет

Что лучше делать, внедрение и передовая практика:


Решение # 1

Внутри global.properties

tab.title.page.number.one = Page One 
tab.title.page.number.two = Page Two 
tab.title.page.number.three = Page Three 
tab.title.colon    = : 
tab.title.hello    = Hello 
tab.title.hi    = Hi 

Затем внутри тега заголовка для каждой страницы JSP

Page 1:

<title> 
    <s:text name="tab.title.page.number.one"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

Страница 2:

<title> 
    <s:text name="tab.title.page.number.two"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

Страница 3:

<title> 
    <s:text name="tab.title.page.number.three"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

ИЛИ


Решение # 2

Внутри global.properties

tab.title.page.one = Page One : Hello : Hi 
tab.title.page.two = Page Two : Hello : Hi 
tab.title.page.three = Page Three : Hello : Hi 

Затем внутри тега заголовка для каждой страницы JSP:

Page 1:

<title><s:text name="tab.title.page.one"/></title> 

Page 2:

<title><s:text name="tab.title.page.two"/></title> 

Page 3:

<title><s:text name="tab.title.page.three"/></title> 

Мой cо-разработчик утверждает, так что Hello, Hi, : являются многоразовыми. Но это только статический текст. Это не меняется. Что лучше использовать в реализации, стандарте кодирования, по производительности (LOL)? Благодаря!

+1

Я часто использовал ярлыки по короткому имени, используя автозапуск, но вы можете сделать оптимизацию LOL. И не используйте 's: text' несколько раз, чтобы быть мудрыми по производительности. –

ответ

2

Вот мой опыт для полностью приложения i18n. Вы не должны определять разные ключи для тех же значений, сколько можете,.

Считайте, что вы хотите определить ярлык для user name.

Вы можете сделать это, как

lable.username=User Name 

ИЛИ

lable.inputform.username=User Name 
lable.registeration.form.username=User Name 
lable.activate.form.username=User Name 

Первый подход намного лучше, так как вы делаете меньше пакета ресурсов. UserName только User Name в целом приложении, если вы хотите изменить, вполне логично, что одного изменения должно быть достаточно.

Просьба учитывать, что огромный ресурсный пакет сложнее поддерживать и требует больше памяти. Комплект ресурсов будет огромна в кратчайшие сроки :)

Я также рекомендую не строить предложения путем добавления ключей:

Например

lable.please+ lable.add + lable.your + lable.username 

Сделать это как:

form.message= Please add your user name 

Это сделайте ваш jsp или действие очень сложным, и вы не получите много.

Поэтому я, как правило, согласен с вами, но ваш подход к колледжу следует рассматривать для многоразовых ценностей!

2

Несколько мыслей слишком долго, чтобы поместиться в комментарий:

Это не имеет никакого смысла для I18N двоеточие: будет ли она измениться? Вряд ли. Если это может, рассмотрите использование пользовательского тега/etc. для завершения статического текста на уровне представления.

Использование текста, отличного от I18N, в самом ключе немного странно, например, использовать .greeting вместо .hello.

page.number.one кажется излишне подробным, вместо этого page.one или просто page1. Или вместо привязки непосредственно к вкладке, так как вы можете повторно использовать это для фактического заголовка страницы или заголовка, только page1.title.

Отпечаток: Я все для повторного использования, но файлы свойств ИМО являются неправильным местом для большого количества того, что вы показываете. Используйте специальный тег или метод утилиты для доступа к фактическим свойствам, которые необходимо изменить.

(Я на самом деле поклонник хранения таких вещей в базе данных I18N, а не в файлах свойств, в любом случае легче справиться с использованием тривиального интерфейса и с соответствующим кэшированием - так же быстро.)