2010-10-15 14 views
15

मैं GWT और UiBinder उपयोग कर रहा हूँ मेरे ऐप के लिए, और मैं वजह से नहीं है वहाँ इसकस्टम UiBinder में जिम्मेदार बताते विजेट

<g:TextBox ui:field="searchBox" styleName="{style.searchBox}" placeholder="search" />

करने के लिए कोशिश कर रहा हूँ लेकिन कस्टम placeholder विशेषता काम नहीं करेगा TextBox पर एक setPlaceholder विधि - मैं इस की जरूरत है:

searchBox.getElement().setAttribute("placeholder", "search");

जावा कोड में वापस आ गया। UiBinder में यह कैसे करें इस पर कोई विचार है? मुझे लगता है कि मैं इसे एक सामान्य इनपुट तत्व में बदल सकता हूं और एक संदर्भ और उसके मूल्य को पकड़ने की कोशिश करता हूं, लेकिन मैं उस सड़क पर नहीं जाऊंगा।

+0

अफैइक यह संभव नहीं है (जैसा कि आपने कहा था, आपको इसके लिए एक सेटटर विधि चाहिए)। 'InitWidget (uiBinder.createAndBindUi (यह)) को कॉल करने के बाद सही दृश्य वर्ग के निर्माता में विशेषता क्यों सेट नहीं करें? संपादित करें: या अपनी खुद की प्लेसहोल्डर कार्यक्षमता लिखें जो पुराने ब्राउज़र पर भी काम करेगी। – z00bs

+0

'initWidget' के बाद मैं अभी' setAttribute' को कॉल कर रहा हूं ... मैं एक्सएमएल फाइलों से प्रेजेंटेशन को स्थानांतरित नहीं करना चाहता ... –

उत्तर

14

कस्टम SearchBox बनाने के बारे में क्या TextBox विधि setPlaceholder(String placeholder) के साथ विस्तारित करता है?

UiBinder में

तब:

<custom:SearchBox ui:field="searchBox" styleName="{style.searchBox}" placeholder="search" />

+2

शायद यही कारण है कि मैं इस मामले में आखिरकार करूँगा, लेकिन मुझे लगता है कि एचटीएमएल 5 फीचर्स का उपयोग करना अधिक कठिन हो रहा है जो विशेषताएँ हैं :( –

8

इस के बाद एक वर्ष के बारे में पूछा गया था, मैं एक कस्टम का उपयोग करने के गुण की जरूरत थी (प्लेसहोल्डर, विशेष रूप से)। इसलिए मैंने निम्नलिखित कस्टम TextField कक्षा लिखी जो TextBox तक फैली हुई है, जिसमें एक GWT TextBox की सभी अंतर्निहित कार्यक्षमता को हैंडलर और इस तरह से शामिल किया गया है। उम्मीद है कि कोई इस पर अपनी खोज में ठोकर खाएगा। :)

public class TextField extends TextBox { 

    String placeholder = ""; 

    /** 
    * Creates an empty text box. 
    */ 
    public TextField() {} 

    /** 
    * Gets the current placeholder text for the text box. 
    * 
    * @return the current placeholder text 
    */ 
    public String getPlaceholder() { 
     return placeholder; 
    } 

    /** 
    * Sets the placeholder text displayed in the text box. 
    * 
    * @param placeholder the placeholder text 
    */ 
    public void setPlaceholder(String text) { 
     placeholder = (text != null ? text : ""); 
     getElement().setPropertyString("placeholder", placeholder); 
    } 
} 
+3

आपको प्लेसहोल्डर को जावा वैरिएबल के रूप में स्टोर करने की आवश्यकता नहीं है। आप सीधे डीओएम वैल्यू का उपयोग कर सकते हैं। – logan

संबंधित मुद्दे