You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不修改原有TablePmo和TableRowPmo前提下隐藏linkki表格列

问题原因分析

你之前尝试的三种方案无效的原因如下:

  • 设置@UITableColumn(width=0):Linkki渲染表格列时默认有最小宽度限制,0值会被强制覆盖为框架预设的最小宽度,仅能让列变窄无法完全隐藏。
  • 设置@UIMoneyField的visible = VisibleType.INVISIBLE:该属性仅控制字段在表单、详情页等场景的可见性,不作用于表格列的生成逻辑。
  • 子类重写方法移除@UITableColumn注解:Linkki扫描PMO注解时会向上递归查找父类的方法注解,只要父类方法标记了@UITableColumn,子类即使移除注解也会被扫描识别。

正确实现方案

方案一(推荐,适配Linkki 1.4及以上版本)

在子类ReducedTableRowPmo重写的getTwo方法上,给@UITableColumn注解添加ignore = true属性,即可直接告诉Linkki扫描列时忽略该方法,不会生成对应列,代码示例:

@Override
@UITableColumn(ignore = true)
@UIMoneyField(/* 保留原有配置即可 */)
public String getTwo() {
    return super.getTwo();
}

无需修改原有父类代码,改造成本最低。

方案二(适配低版本Linkki)

如果你的Linkki版本没有提供ignore属性,可以同时继承原有TablePmo创建新的ReducedTablePmo,重写getVisibleColumns方法过滤掉目标列即可,代码示例:

public class ReducedTablePmo extends TablePmo {
    @Override
    public List<String> getVisibleColumns() {
        return super.getVisibleColumns().stream()
                // 列的默认id为getter方法去掉get前缀后首字母小写,此处对应getTwo的id为two
                .filter(columnId -> !"two".equals(columnId))
                .collect(Collectors.toList());
    }
}

后续使用新的ReducedTablePmo和ReducedTableRowPmo绑定渲染表格即可。

内容的提问来源于stack exchange,提问作者Thorsten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 20:24:05