【问题标题】:Disable Wicket CheckGroup without disabling the rest of the form禁用 Wicket CheckGroup 而不禁用表单的其余部分
【发布时间】:2021-11-09 05:07:30
【问题描述】:

我有一个带有CheckGroupPropertyListView 的表单。列表视图中的每个项目都有一个属于检查组的Check 和一个AjaxFallbackLink。当我禁用检查组时,整个表单都被禁用,包括链接。同样,当我将visible设置为false时,整个表单是不可见的。

Form form = new Form("form");

CheckGroup checkGroup = new CheckGroup("checkGroup", checkList) {
    @Override
    protected void onConfigure() {
        super.onConfigure();
        setEnabled(isAuthorized());
    }
};  
checkGroup.add(new CheckGroupSelector("groupSelector"));
form.add(checkGroup);

PropertyListView<MyList> tableList = new PropertyListView<MyList>("table", new PropertyModel(lists, "myList")){
    @Override
    protected void populateItem(ListItem<OfacCustomerMatchFile> item) {
        item.add(new Check("check", item.getModel(), checkGroup);
        item.add(new AjaxFallbackLink("itemLink") { ... });
    }
};
form.add(tableList);

【问题讨论】:

    标签: wicket


    【解决方案1】:

    您必须在链接上覆盖 #isEnabledHierarchy()

    public boolean isEnabledInHierarchy()
    {
        return true;
    }
    

    当心,这可能很危险,因为您正在规避 Wicket 的默认授权处理。

    【讨论】:

    • 为什么链接完全被禁用?它们不是 CheckGroup 的子级。 Checks 因github.com/apache/wicket/blob/…而被禁用
    • 这成功了。但是,有没有办法使该检查组只影响检查?这对于该场景来说很容易,但对于每个列表项或isVisible() 的多个组件来说会非常麻烦。
    • Martin 有一个正确的观点:链接不是 checkGroup 的子级,因此无论如何都不应该禁用它们 - 请检查您的代码。
    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    相关资源
    最近更新 更多