获取单选按钮分组

时间:2011-12-09 04:04:09

标签: java gwt abstraction

在我的应用程序中,我有来自服务器的URN识别数据。我正在尽可能抽象,因此我的视图中几乎没有逻辑代码,我正在使用包装这些视图的通用演示者。所有小部件都有URN,这使得将传入数据映射到特定小部件变得非常容易(直到现在,这是1对1的关系)。这几乎适用于每个小部件,现在我已达到了绊倒的程度。

假设我(仅为了简单起见)视图上有两个RadioButton元素。这些按钮属于“组”(只需将它们的name值设置为相同的东西),但显然它们是2个不同的元素。我无法像其他情况一样将我的URN标识数据映射到单个小部件,因为在这种情况下,它是两个小部件。

这是我的意思的一个例子:

mockup

公用事业公司是ListBox,所以只有一个小部件。我将列表中的每个项目映射到特定的枚举值。

效用率是TextBox,因此只需要映射一个小部件。

对于能源使用,他们可以选择使用年度平均值或输入12个月值。我被困在这里我无法映射到RadioButton元素中的一个,因为在视图中我需要一些额外的逻辑来适当地处理行为。

我是否只是映射到一个窗口小部件并在我的视图中粘贴(不需要的)逻辑,以确定所有元素的状态应基于所在的一个窗口小部件的值映射?

我该如何处理这个案子?

编辑(解决方案): 按照jusio的回答的概念,我提出了一个可行的解决方案。因为我不想通过我的逻辑来处理特殊情况处理以处理非小部件,所以我创建了一个RadioButtonSet虚拟小部件(public class RadioButtonSet <T extends Enum<?> & HasDisplayText> extends Widget implements HasValueChangeHandlers<T>, HasValue<T>),我手动传递了无线电我打算分组。完成后,我可以获取或设置其值,并在用户更改选择时触发相应的事件。然后映射无线电集合与对列表框这样做没有什么不同。谢谢jusio。

2 个答案:

答案 0 :(得分:2)

我相信在你的情况下,你不应该将单选按钮视为两个单独的小部件,基本上在你的情况下你可以将单选按钮组视为组合框,因为行为几乎相同(唯一的问题是你有额外的掌握细节)。所以基本上你要做的就是将真正的BO对象包装成某种RadioButtonGroupModel,并让它进行查看,查看可以采用这个模型并生成单选按钮(带有一些编辑器或其他任何东西)。我记得当我为JFace扩展数据绑定FW时遇到这个问题,这是我找到解决这个问题的最好方法。

答案 1 :(得分:0)

如果我理解正确的问题,有两种可能的解决方案:

    • 为每个RadioButton提供唯一的URN(例如:oldURN_1,oldURN_2)
    • 发送URN数据时,请禁用另一个
  1. 为每个RadioButton保留相同的名称,但在服务器发送的数据中添加一个数字变量,指示它应该使用哪个radioButton(例如: 0 表示平均值, 1 每月)