Vaadin Grid自定义渲染器无法正常工作

时间:2017-03-28 12:02:58

标签: java vaadin7 vaadin-grid vaadin-spring-boot

我想为某些网格列构建自定义渲染器,以便在用户无权阅读时隐藏文本。即使用户无法读取数据,仍然可以访问数据仍然很重要。 所以我写了一个自定义渲染器,如下所示:

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 个答案:

没有答案