我想要一種輕鬆地將小部件綁定到其呈現的業務對象的方法。因此,當用戶與小部件交互時,我可以輕鬆確定持有該小部件數據的業務對象。GWT - 如何將業務對象與小部件相關聯
例如,如果我們想象一個日曆小部件,我們將使用AbsolutePanel實現。對於每個appt對象,我們都會在日曆中添加一個標籤。然後,當用戶點擊標籤時,他可以更新該應用。所以我需要知道標籤引用哪個appt對象。
例如,如果我們看下面的代碼;如果預約的標籤收到點擊,我怎麼知道它代表的是哪個appt?我能看到的唯一解決方案就是爲Label創建一個ApptLabel子類,它將持有對其應用的引用。這很好,但是這個例子說明了一個更常見的需求,即將小部件與數據對象相關聯;然而,這意味着每個在視圖中存在的對象都需要繼承一個小部件。看起來很重 - 我期望在框架中找到一些東西,例如一個小部件中的字符串屬性,我可以設置爲一個對象鍵
我試過的其他方法;保持地圖地圖 - 這沒有工作作爲標籤對象創建犯規似乎是相同的(在我猜的Object.Equals而言就是HashMap中使用)
class WidgetCalendar extends Composite {
AbsolutePanel m_panel = new AbsolutePanel();
m_panel.setStylePrimaryName("calendar");
m_panel.setPixelSize(width, height);
public WidgetCalendar(ArrayList<BomAppt> appts) {
initWidget(m_panel);
for (BomAppt a : appts) {
Label l = new Label();
l.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
// how do I know my BomAppt in here ?
}
m_panel.add(l, someX, someY);
}
}
}
理想我能做些什麼像這樣 類WidgetCalendar擴展Composite {AbsolutePanel m_panel = new AbsolutePanel(); m_panel.setStylePrimaryName(「calendar」); m_panel.setPixelSize(width,height);
public WidgetCalendar(ArrayList<BomAppt> appts) {
initWidget(m_panel);
for (BomAppt a : appts) {
Label l = new Label();
l.setItemData(a.getUniqueId());
l.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
BomAppt a = BomAppt.getApptWithId(e.getItemData())
}
}
m_panel.add(l, someX, someY);
}
}
}
這是我創建一個子類的解決方案,這似乎重給我,我更喜歡簡單的東西
class ApptLabel extends Label {
public ApptLabel(BomAppt a) {
m_a = a;
this.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
m_a.doSomething();
});
}
BomAppt m_a;
}
class WidgetCalendar extends Composite {
AbsolutePanel m_panel = new AbsolutePanel();
m_panel.setStylePrimaryName("calendar");
m_panel.setPixelSize(width, height);
public WidgetCalendar(ArrayList<BomAppt> appts) {
initWidget(m_panel);
for (BomAppt a : appts) {
BomLabel l = new BomLabel();
l.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
// how do I know my BomAppt in here ?
}
m_panel.add(l, someX, someY);
}
}
}
當然..我同意這個作品 - 我確實在我的問題中包含這種模式。我正在尋找更輕的重量.. – dancl 2012-04-06 11:36:33