2011-02-26 13 views
8

के साथ एंकर में विजेट एम्बेड करने के लिए मैं UIBinder में निम्न का उपयोग करना चाहता हूं, ताकि मैं अपने कोड में लिंक के href प्रोग्रामेटिक रूप से सेट कर सकूं।जीडब्ल्यूटी: UIBinder

<g:HTMLPanel> 
    <g:Anchor ui:field="link"> 
     <g:InlineLabel ui:field="firstName"/> 
     <g:InlineLabel ui:field="lastName"/> 
    </g:Anchor> 
</g:HTMLPanel> 

जब मैं यह कोशिश मैं:

ERROR: Found widget in an HTML context Element <g:InlineLabel ui:field='firstName'> (:7). 

मैं कैसे एक लंगर के अंदर विजेट एम्बेड कर सकते हैं? इससे पहले मैं का उपयोग कर का सहारा लिया गया है:

<a id="myAnchor"> 
    etc... 
    </a> 

और फिर HREF स्थापित करने के लिए मेरी कोड में डोम से छेड़छाड़, लेकिन यह बदसूरत है। क्या कोई बेहतर तरीका है?

+0

आप इनलाइन लेबल विजेट का उपयोग क्यों कर रहे हैं? क्या आप एस या इसके बजाय समान तत्व का उपयोग नहीं कर सकते? –

+0

@ थॉमस- मैं इनलाइन लेबल का उपयोग कर रहा हूं क्योंकि मुझे उन्हें प्रोग्रामेटिक रूप से अपडेट करने की आवश्यकता है। इनलाइन लेबल एक अवधि के रूप में प्रस्तुत करता है। –

उत्तर

6

पैनल (फ़्लो या क्षैतिज) का उपयोग करना बेहतर है और लिंक को अनुकरण करने के लिए पैनल में क्लिक हैंडलर जोड़ें। एंकर, बटन और इसी तरह के विजेट्स उनके अंदर बाल टैग की अनुमति नहीं देंगे।

+0

मैंने क्लिकहेन्डलर को सीधे इनलाइन लेबल में जोड़ना समाप्त कर दिया। अन्यथा मुझे फ्लो/क्षैतिज पैनेल को फोकसपैनल में जोड़ना होगा। आह, यह आसान होना चाहिए। –

+0

मैं अपनी जीवीटी वेबसाइटों में एंकर तत्वों से बचने के बारे में चिंतित हूं क्योंकि Google क्रॉलर मेरी वेबसाइट की संरचना को समझ नहीं रहा है। एंकर/हाइपरलिंक को विगेट्स रखने की अनुमति देने के लिए यह समस्याग्रस्त क्यों है? –

+0

@ DraškoKokić मुझे लगता है कि जीडब्ल्यूटी पेज बनाने के लिए नहीं बल्कि आवेदन है। तो यह अबू खोज इंजन परवाह नहीं करता है। –

14

नीचे दी गई कक्षा बिल्कुल सरलपैनेल की तरह कार्य करती है (यानी, आप इसमें एक विजेट डाल सकते हैं), लेकिन "div" के बजाय "ए" का उपयोग करता है। यदि आपको अधिक विजेट की आवश्यकता है तो बस इसमें एक और पैनल डालें।

import com.google.gwt.user.client.DOM; 
import com.google.gwt.user.client.ui.SimplePanel; 

public class Link extends SimplePanel { 
    public Link() { 
     super(DOM.createAnchor()); 
    } 

    private void setHref(String href) { 
     getElement().setAttribute("href", href); 
    } 

    private String getHref() { 
     return getElement().getAttribute("href"); 
    } 

    public void setTarget(String frameName) { 
     getElement().setAttribute("target", frameName); 
    } 
} 
संबंधित मुद्दे