TabLayoutPanel - Показать вкладки на основе ролей

Я разрабатываю GWT-приложение, в котором навигация в основном представляет собой TabLayoutPane, где каждая вкладка представляет различные функции. Мне нужно только показать вкладки, которые пользователь может видеть (у каждого пользователя есть роль, например, пользователь или администратор).

Проблема в том, что я не знаю, как этого добиться, особенно с UIBinder.

Вот что я подумал:

  1. Не используйте UIBinder и не создавайте TabLayoutPanel программно.
  2. Используйте UIBinder и просто скрывайте определенные вкладки в зависимости от роли каждого пользователя (что может показаться неэффективным).

Или есть лучшие способы добиться чего-то подобного?

2 ответа

Решение

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

Я предлагаю вариант 2.

GWT производит меньшее количество JavaScript, потому что вкладки в UiBinder можно превратить в HTML и CSS. Чтобы скрыть вкладку и ее содержимое:

    aTabPanel.getTabWidget(0).setVisible(false);
    aTabPanel.getTabWidget(0).getParent().setVisible(false);

Немного кода, но вторая строка гарантирует, что сама вкладка скрыта в дополнение к ее содержимому.

Другие вопросы по тегам