TabLayoutPanel - Показать вкладки на основе ролей - PullRequest
0 голосов
/ 17 мая 2011

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 19 апреля 2013

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

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

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

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

0 голосов
/ 17 мая 2011

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

...