2013-09-12 2 views
0

Я пишу серию мастеров веб-страниц для процесса подачи заявки. Мастер составляет 30 страниц. Существует 4 разных типа пользователей. В зависимости от типа пользователя они могут видеть разные статические тексты на каждой странице формы, или они могут видеть разные поля в форме. Это 4 пользовательских типа X 30 страниц = 120 общих веб-страниц. 85% из 4 пользовательских интерфейсов Wizard являются одинаковыми. Различия варьируются от страницы к странице и от типа пользователя до типа пользователя, поэтому я не могу иметь 25 общих страниц мастера и 5 уникальных для каждого типа пользователя.как показать разные сообщения различным типам пользователей в grails/java

Я пытаюсь написать код, чтобы у меня не было 30 страниц, дублированных 4 раза. Я использую шаблоны Grails, так что у меня всего 30 страниц, которые вызывают различия в зависимости от типа пользователя. Одна из моих идей заключалась в подкреплении интернационализации, встроенной в грайлы. Например, если у меня есть пользователь с ролью Role_Finance, их мастер вытащит текст для отображения из messages.properties. Если у меня есть пользователь с ролью Role_Contractor, я мог бы назначить им другой язык (испанский), чтобы мастер вытащил другой текст из messages_es.properties.

Хотя я понимаю, что это не цель интернационализации граалей, похоже, что это было бы чистое решение. Это не международная заявка, поэтому я не хочу потерять эту функциональность. Кто-то должен был сделать что-то подобное раньше и найти лучшее решение?

ответ

0

Вместо того, чтобы пытаться использовать другой язык при злоупотреблении i18n, вместо этого добавьте роль пользователя в ключ сообщения, например wizard1.Role_Finance.field1=....

2

Как и у doelleri, вы можете создавать свои ключи сообщений гибким способом.

Если сообщение зависит от роли пользователя, вы можете продлить ключ сообщения по имени роли. Например, вы можете определить ключи сообщений, как это:

step1.welcome.Role_Finance=Hello Finance 
step1.welcome.Role_Contractor=Hello Contractor 

и их решения зависит от роли пользователя

<g:message code="step1.welcome.${ user.getRole() }" /> 

Если у вас есть много сообщений, как это вы можете также думать о создании специального сообщения тег, который автоматически добавляет роль.

+0

Это звучало хорошо, пока я не начал его реализовывать. Затем я понял, что в springsecurity объект User имеет набор ролей. Я мог бы проверить первую роль, но если я добавлю больше роли позже на объект пользователя, это может вызвать проблемы. – spock99

+0

. Затем добавьте другой метод в класс пользователя, который возвращает «тип» пользователя. Вы можете проверить роли или что-то еще в этом методе. Или подумайте о своем дизайне, возможно, весенние роли безопасности - не лучший способ дифференцировать пользователей. – micha

Смежные вопросы