Tôi về cơ bản có một menu nơi bạn không thể nhấp vào tiêu đề, nhưng khi bạn di chuột qua mục menu bạn có thể chọn từ các phần tử thả xuống. Mỗi phần tử là g: Các thẻ neo với các trường ui được liên kết với chúng. Điều tôi mong đợi sẽ xảy ra, là khi người dùng nhấp vào một trong các phần tử thả xuống, uiHandler của tôi cho trường đó sẽ kích hoạt. Ngay cả với gỡ lỗi trên và một điểm break nó không bao giờ trúng.GWT UiHandler cho g: Neo không bắn
Dưới đây bạn sẽ tìm thấy các lĩnh vực quan tâm chính trong mã. Tôi sẽ chỉ đăng nhập gwt của tôi ở đây, vì nó có thể được giả định phần còn lại là chính xác do lỗi số không.
Dưới đây là một đoạn XML để có được một ý tưởng về những gì đang xảy ra
<!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>
Và sau đó đây là những mảnh từ lớp Java của tôi
nhập khẩu
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 Fields
@UiField
protected LIElement juniorHigh;
@UiField
protected Anchor juniorHighFall;
@UiField
protected Anchor juniorHighSpring;
@UiField
protected Anchor juniorHighSummer;
Ui Handler
@UiHandler({"juniorHighFall","juniorHighSpring","juniorHighSummer"})
public void handleMenuClick(ClickEvent event)
{
DisplayUtil.displayAlertMessage(event.toString());
}
Initialize
@Override
public void initializeBinder()
{
initWidget(ourUiBinder.createAndBindUi(this));
}
Bây giờ, UiHandler không bao giờ thực sự được nhấn. Tôi đã có g: Anchor tags có và không có href, và cũng đã thử chúng như g: Hyperlink và g: Button không thành công. Như thể UiHandler không có ở đó.
Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều và nếu bạn cảm thấy bạn cần bất kỳ điều gì khác để khắc phục sự cố, vui lòng cho tôi biết !!
Cảm ơn :-)
EDIT:
Chỉ cần chắc chắn rằng đây là rõ ràng, các tập tin mẫu ui.xml có chứa tập tin ui.xml này là đặt điều này trong một div. Khi tôi thay thế bằng SimplePanel, mọi thứ đã hoạt động với UiHandler.
Cảm ơn bạn đã trả lời!
Vâng, chúng là các lớp tùy chỉnh và tôi sẽ bắt đầu đào sâu vào chúng để xem có điều gì đó thú vị xảy ra với chúng hay không. Cảm ơn bạn vì sự bảo đảm rằng mã nên hoạt động, bởi vì điều đó đã khiến tôi lên tường! Tôi cũng sẽ cung cấp cho SimplePanel một shot để xem điều đó có thực hiện thủ thuật hay không! Cảm ơn vì sự trả lời! –
Ngoài ra, tôi sẽ upvote này, nhưng tôi không có đủ danh tiếng trên đây chưa làm như vậy ... (╯ ° □ °) ╯︵ ┻━┻ –
SimplePanel đã làm các trick! Trên mẫu xml mà có chứa ExtendedHTMLPanel này, các phần tử là divs.Tôi đã thay đổi các div thành SimplePanels và tất cả các UiHandlers đều hoạt động bình thường.Tôi vẫn không có đủ danh tiếng để upvote câu trả lời của bạn, nhưng cảm ơn bạn! :) –