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 не работает должным образом, потому что когда я пытаюсь отладить логику на стороне клиента, она даже не вызывается. Может кто-нибудь указать мне, какие шаги я пропускаю?
С уважением, Фабиан