Vaadin Grid Custom Renderer не работает

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

package <package>.util.renderer;

import com.vaadin.client.renderers.Renderer;
import com.vaadin.client.widget.grid.RendererCellReference;
import <package>.util.CustomSecurityConstants;
import <package>.BaseUI;

public class BlockedStringRendererClient implements Renderer<String> {

private boolean canReadBlocked = BaseUI.getCurrentPrincipal().get().getAuthorities().contains(CustomSecurityConstants.READ_PERMISSION_BLOCKED);

@Override
public void render(RendererCellReference rendererCellReference, String s) {
    if (canReadBlocked) {
        rendererCellReference.getElement().setInnerText(s);
    } else {
            rendererCellReference.getElement().setInnerText("");
       }
   }
}

Затем я написал серверную часть рендерера, следуя этому руководству https://vaadin.com/docs/-/part/framework/clientsidewidgets/clientsidewidgets-grid.html

package <package>.util.renderer;


import com.vaadin.ui.Grid;

public class BlockedStringRendererServer extends Grid.AbstractRenderer<String> {
    public BlockedStringRendererServer() {
        super(String.class);
    }
}

И, наконец, разъем для подключения этих компонентов:

package <package>.util.renderer;

import com.vaadin.client.connectors.AbstractRendererConnector;
import com.vaadin.shared.ui.Connect;

@Connect(BlockedStringRendererServer.class)
public class BlockedStringRendererConnector extends AbstractRendererConnector<String> {

@Override
public BlockedStringRendererClient getRenderer() {
    return (BlockedStringRendererClient) super.getRenderer();
}

}

Но теперь, когда я пытаюсь использовать разъем, как показано ниже:

grunddatenGrid.getColumn("name").setRenderer(new BlockedStringRendererServer());

Сетка больше не отображает столбцы, содержащие строки.

Я действительно не знаю, что я делаю неправильно, но я думаю, что это может быть связано с тем, что Connector-Annotation не работает должным образом, потому что когда я пытаюсь отладить логику на стороне клиента, она даже не вызывается. Может кто-нибудь указать мне, какие шаги я пропускаю?

С уважением, Фабиан

0 ответов

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