2012-06-12 11 views
8

मेरे पास बहुत सारे इनपुट के साथ एक फॉर्म है टेक्स्ट, जो मैं चाहता हूं वह उन लोगों को हाइलाइट करना है जो सही डेटा से भरे नहीं हैं।एक सत्यापन त्रुटि उत्पन्न होने पर जेएसएफ में इनपुट टेक्स्ट को हाइलाइट करें

मैंने 'घटक.विलिद' का उपयोग करने की कोशिश की लेकिन यह हमेशा वापस लौटाता है कि फ़ील्ड अमान्य है (यानी फ़ील्ड हमेशा लाल होते हैं)।

Always invalid

ध्यान दें कि क्षेत्र भी जब पेज पहली बार के लिए भरी हुई है पर प्रकाश डाला गया है: इस परिणाम है

<h:inputText value="#{creerPersonne1.nom}" id="nom" 
    style="#{not nom.valid ? 'border-color:red;' : 'border-color:black;'}"> 
    <f:validateRegex pattern="^[a-zA-Z]+$"></f:validateRegex> 
</h:inputText> 

:

इस

कोड है।

+1

आपने अपने टेक्स्ट में 'घटक.विलिद' लिखा लेकिन आपका कोड 'nom.valid' दिखाता है। क्या आपने (सही) 'घटक। Valid' कोशिश की? –

उत्तर

20

आपको nom.valid के बजाय component.valid का उपयोग करना चाहिए।

component वर्तमान इनपुट घटक के लिए एक अंतर्निहित ईएल वस्तु है। और component.valid सर्वर साइड घटक की isValid() विधि को कॉल करता है। id तर्क इस तरह से उपयोग नहीं किया जा सकता है।

तो आप अपने कोड इस प्रकार बदलना चाहिए:

style="#{ component.valid ? 'border-color:black;' : 'border-color:red;'}" 

(संबंधित नहीं है, लेकिन आप बेहतर कठिन कोडित शैलियों के बजाय शैली कक्षाओं का उपयोग करना चाहिए वैध जांच styleClass लिए काम करता है और साथ ही जोड़कर देखते हैं।)।

+0

वास्तव में, मैंने सोचा था कि घटक को घटक की वास्तविक आईडी द्वारा प्रतिस्थापित किया जाना चाहिए:/ धन्यवाद। – Eildosa

+0

वैसे, मैंने अभी तक कड़ी मेहनत सीखी है कि वे निर्भरता के बिना काम नहीं करेंगे "हाइबरनेट-सत्यापनकर्ता" – Eildosa

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