2011-09-21 35 views
6

我基本上有一個菜單,您不能單擊標題,但是當您將鼠標懸停在菜單項上時,您可以從下拉列表中選擇元素。每個元素都是g:帶有與它們關聯的UI字段的錨定標記。我期望會發生的事情是,當用戶點擊其中一個下拉元素時,我的用於該字段的uiHandler會觸發。即使在調試開始和中斷點的情況下,它也不會發生。GWT UiHandler for g:錨點不是射擊

下面你會發現代碼中的主要關注領域。我只會在這裏發佈我的gwt import,因爲可以假設其餘的都是正確的,因爲沒有錯誤。

下面是一個XML片斷,以獲得什麼是對

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
      xmlns:g='urn:import:com.google.gwt.user.client.ui' 
      xmlns:cpcw='urn:import:org.collegeboard.pa.gwt.client.widget'> 
    <cpcw:ExtendedHTMLPanel> 
     <ul> 
      <li ui:field="juniorHigh"><g:Anchor href="">Junior High</g:Anchor> 
      <ul> 
       <li><g:Anchor href="#" ui:field="juniorHighFall">Fall</g:Anchor></li> 
       <li><g:Anchor href="#" ui:field="juniorHighSpring">Spring</g:Anchor></li> 
       <li><g:Anchor href="#" ui:field="juniorHighSummer">Summer</g:Anchor></li> 
      </ul> 
     </li> 
    </ul> 
    </cpcw:ExtendedHTMLPanel> 
</ui:UiBinder> 

然後在這裏去的想法是從我的Java類的作品

進口

import com.google.gwt.core.client.GWT; 
import com.google.gwt.dom.client.LIElement; 
import com.google.gwt.event.dom.client.ClickEvent; 
import com.google.gwt.uibinder.client.UiBinder; 
import com.google.gwt.uibinder.client.UiField; 
import com.google.gwt.uibinder.client.UiHandler; 
import com.google.gwt.user.client.ui.Anchor; 

UI字段

@UiField 
protected LIElement juniorHigh; 

@UiField 
protected Anchor juniorHighFall; 

@UiField 
protected Anchor juniorHighSpring; 

@UiField 
protected Anchor juniorHighSummer; 

用戶界面處理

@UiHandler({"juniorHighFall","juniorHighSpring","juniorHighSummer"}) 
public void handleMenuClick(ClickEvent event) 
{ 
    DisplayUtil.displayAlertMessage(event.toString()); 
} 

初始化

@Override 
public void initializeBinder() 
{ 
    initWidget(ourUiBinder.createAndBindUi(this)); 
} 

現在,UiHandler實際上從未被擊中。我有g:帶有和沒有href的錨定標籤,並且也嘗試過將它們作爲g:超鏈接和g:沒有成功的按鈕。這就好像UiHandler不在那裏。

任何幫助將不勝感激,也如果你覺得你需要任何其他的疑難解答,請讓我知道!

感謝:-)

編輯:

只是爲了確保,這是明確的,即包含在此ui.xml文件模板ui.xml文件是一個div放在這一點。當我用SimplePanel替換它時,所有的工作都與UiHandler一起工作。

感謝您的回覆!

回答

6

這樣做並且應該按照您默認的方式工作。

我注意到:

  • 你的代碼引用 「ourUiBinder」
  • 你的控件被包裝在一個 「ExtendedHTMLPanel」

這些看似自定義類 - 或許時髦的東西是怎麼回事在那些實現中?

也許你可以嘗試在SimplePanel中包裝這些錨點,並使用默認的UiBinder,看看是否有效。如果確實如此,那麼這可能與您使用的任何自定義控件有關。如果它不是那麼奇怪的事情正在發生 - 也許重新啓動您的IDE等

+0

是的,他們是自定義類,我會開始深入研究他們,看看他們是否有什麼奇怪的事情發生。感謝您確保代碼可以正常工作,因爲這將我推上了牆! 我也會給SimplePanel一個鏡頭,看看是否有這個竅門!感謝您的迴應! –

+0

此外,我會upvote這個,但我沒有足夠的聲譽,在這裏還沒有這樣做... (□°□°)╯(┻━┻ –

+0

SimplePanel做到了!在模板xml上包含這個ExtendedHTMLPanel,元素是div,我把div改成了SimplePanels,所有的UiHandlers都能正常工作,但我還沒有足夠的聲望來支持你的答案,但是謝謝你! –

2

模板XML文件有每個視圖包含在一個div元素。Filip-fku建議我查看SimplePanels,查看我發佈的代碼,這讓我看看模板文件,看看它們不是GWT容器,它們是div。只要我將它們製作成SimplePanels,我的UiHandlers就像魅力一樣工作!

謝謝Filip-fku! g:SimplePanel FTW !!!