diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java index 419299336e..11e30a2e9f 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java @@ -275,18 +275,25 @@ public class DesensitizationRuleChoosePane extends JPanel { @Override public void actionPerformed(ActionEvent e) { - // 获取当前选中规则 - DesensitizationRule selectedValue = getSelectedValue(); + // 获取当前选中规则的副本 + DesensitizationRule selectedValue = null; + try { + selectedValue = (DesensitizationRule) getSelectedValue().clone(); + } catch (CloneNotSupportedException ex) { + throw new RuntimeException(ex); + } DesensitizationRuleEditPane editPane = new DesensitizationRuleEditPane(getCurrentExistRuleNames(selectedValue.getRuleName())); editPane.populateBean(selectedValue); + final DesensitizationRule finalRule = selectedValue; BasicDialog basicDialog = editPane.showWindowWithCustomSize(SwingUtilities.getWindowAncestor(parent), new DialogActionAdapter() { @Override public void doOk() { DesensitizationRule rule = editPane.updateBean(); // 修改同步到RuleManager中 if (DesensitizationRule.valid(rule)) { - DesensitizationRuleManager.getInstance().updateRule(rule); + DesensitizationRuleManager.getInstance().updateRule(finalRule, rule); } + setSelectedValue(rule); fireTableDataChanged(); } diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java index f050e4b0cd..52b7e5b19b 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java @@ -250,6 +250,8 @@ public class TableDataDesensitizationTableModel extends UITableModelAdapter customRules = DesensitizationRuleManager.getInstance().getRulesBySource(DesensitizationRuleSource.CUSTOM); + latestRules.put(DesensitizationRuleSource.CUSTOM, customRules); + } + }