TabLayoutPanel - Показать вкладки на основе ролей
Я разрабатываю GWT-приложение, в котором навигация в основном представляет собой TabLayoutPane, где каждая вкладка представляет различные функции. Мне нужно только показать вкладки, которые пользователь может видеть (у каждого пользователя есть роль, например, пользователь или администратор).
Проблема в том, что я не знаю, как этого добиться, особенно с UIBinder.
Вот что я подумал:
- Не используйте UIBinder и не создавайте TabLayoutPanel программно.
- Используйте UIBinder и просто скрывайте определенные вкладки в зависимости от роли каждого пользователя (что может показаться неэффективным).
Или есть лучшие способы добиться чего-то подобного?
2 ответа
Я бы пошел с подходом номер один, так как он намного чище, имхо. Однако убедитесь, что вы не используете его в качестве функции безопасности и не отображаете конфиденциальную информацию, которую не администратор не может видеть. Поскольку вся конструкция будет происходить в javascript в браузере, будет довольно просто обмануть браузер, показывая вкладки администратора без соответствующей авторизации.
Я предлагаю вариант 2.
GWT производит меньшее количество JavaScript, потому что вкладки в UiBinder можно превратить в HTML и CSS. Чтобы скрыть вкладку и ее содержимое:
aTabPanel.getTabWidget(0).setVisible(false);
aTabPanel.getTabWidget(0).getParent().setVisible(false);
Немного кода, но вторая строка гарантирует, что сама вкладка скрыта в дополнение к ее содержимому.