在我的应用程序中,我有来自服务器的URN识别数据。我正在尽可能抽象,因此我的视图中几乎没有逻辑代码,我正在使用包装这些视图的通用演示者。所有小部件都有URN,这使得将传入数据映射到特定小部件变得非常容易(直到现在,这是1对1的关系)。这几乎适用于每个小部件,现在我已达到了绊倒的程度。
假设我(仅为了简单起见)视图上有两个RadioButton
元素。这些按钮属于“组”(只需将它们的name
值设置为相同的东西),但显然它们是2个不同的元素。我无法像其他情况一样将我的URN标识数据映射到单个小部件,因为在这种情况下,它是两个小部件。
这是我的意思的一个例子:
公用事业公司是ListBox
,所以只有一个小部件。我将列表中的每个项目映射到特定的枚举值。
效用率是TextBox
,因此只需要映射一个小部件。
对于能源使用,他们可以选择使用年度平均值或输入12个月值。我被困在这里我无法映射到RadioButton
元素中的一个,因为在视图中我需要一些额外的逻辑来适当地处理行为。
我是否只是映射到一个窗口小部件并在我的视图中粘贴(不需要的)逻辑,以确定所有元素的状态应基于所在的一个窗口小部件的值映射?
我该如何处理这个案子?
编辑(解决方案):
按照jusio的回答的概念,我提出了一个可行的解决方案。因为我不想通过我的逻辑来处理特殊情况处理以处理非小部件,所以我创建了一个RadioButtonSet
虚拟小部件(public class RadioButtonSet <T extends Enum<?> & HasDisplayText> extends Widget implements HasValueChangeHandlers<T>, HasValue<T>
),我手动传递了无线电我打算分组。完成后,我可以获取或设置其值,并在用户更改选择时触发相应的事件。然后映射无线电集合与对列表框这样做没有什么不同。谢谢jusio。
答案 0 :(得分:2)
我相信在你的情况下,你不应该将单选按钮视为两个单独的小部件,基本上在你的情况下你可以将单选按钮组视为组合框,因为行为几乎相同(唯一的问题是你有额外的掌握细节)。所以基本上你要做的就是将真正的BO对象包装成某种RadioButtonGroupModel,并让它进行查看,查看可以采用这个模型并生成单选按钮(带有一些编辑器或其他任何东西)。我记得当我为JFace扩展数据绑定FW时遇到这个问题,这是我找到解决这个问题的最好方法。
答案 1 :(得分:0)
如果我理解正确的问题,有两种可能的解决方案: