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

Eclipse IWorkbenchPreferencePage设置的警告信息校验通过后不消失如何解决

实现方案
  • 给所有需要校验的输入控件添加实时内容监听器:文本输入控件用ModifyListener,选择类控件(下拉框、复选框等)用SelectionListener,每次控件内容发生变化就自动触发校验逻辑
  • 封装独立的统一校验方法,所有校验逻辑收敛到该方法中:校验不通过时按原有逻辑设置警告消息,校验通过时调用setMessage(null, IMessageProvider.NONE)即可自动清除当前展示的警告消息
  • 重写页面的performOk()、performApply()方法,在用户点击「确定」「应用」按钮时额外触发一次全量校验,覆盖用户未修改控件直接提交的场景

示例代码

// 页面初始化时给输入控件绑定校验监听
Text inputText = new Text(container, SWT.BORDER);
inputText.addModifyListener(e -> validateInput());

// 统一校验方法
private void validateInput() {
    String content = inputText.getText().trim();
    // 自定义校验规则
    if (!isContentValid(content)) {
        setMessage("Not valid string", IMessageProvider.WARNING);
        // 若需要拦截提交可额外设置 setValid(false);
    } else {
        // 校验通过,清空警告消息
        setMessage(null, IMessageProvider.NONE);
        setValid(true);
    }
}

// 提交前触发全量校验
@Override
public boolean performOk() {
    validateInput();
    return super.performOk();
}

@Override
protected void performApply() {
    validateInput();
    super.performApply();
}

注意:如果你的页面同时存在错误级别的提示,需要调用setErrorMessage(null)单独清除错误提示,setMessage方法仅处理普通、警告级别的消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:39:04