2011-03-05 15 views
6

मुझे कुछ समस्याएं आ रही हैं जब मैं अपने जेएसएफ से उपयोगकर्ता इनपुट को एक प्रबंधित बीन्स में मान्य करने का प्रयास करता हूं। मैं कंसोल में सत्यापन संदेश पुनः प्राप्त करता हूं, लेकिन मैं इसे पृष्ठ में नहीं देखता हूं। मैं समझ नहीं पा रहा हूं कि समस्या कहां है।प्रबंधित बीन समस्या (जेएसएफ 2.0) में उपयोगकर्ता इनपुट सत्यापन

जानकारी:

यह कंसोल आउटपुट है मान्यता विधि के अंदर !! जानकारी: कोई मिलान नहीं !!! जानकारी: org.hibernate.validator.engine.resolver.JPATraversableResolver का एक उदाहरण instantiated। जानकारी: चेतावनी: फेस मैसेज को घेर लिया गया है, लेकिन प्रदर्शित नहीं किया जा सकता है। sourceid = bRegForm: नाम [गंभीरता = (INFO 0), सारांश = (आपका नाम विशेष वर्ण नहीं हो सकते), विस्तार = (आपका नाम विशेष वर्ण नहीं हो सकते)]

यह मैं कैसे JSF इनपुट बनाई गई है घटक:

<h:inputText id="name" value="#{registrationController.name}" validator="#{registrationController.validateName}" required="true"> 
     <h:message for="name"/> 
    </h:inputText> 

और यह मैं कैसे सत्यापन विधि बनाया कैसे:

@ManagedBean 
@RequestScoped 
public class RegistrationController { 
... 
public void validateName(FacesContext context, UIComponent validate, 
     Object value) { 
    String inputFromField = (String) value; 
    String simpleTextPatternText = "^[a-zA-Z0-9]+$"; 
    Pattern textPattern = null; 
    Matcher nameMatcher = null; 
    textPattern = Pattern.compile(simpleTextPatternText); 
    nameMatcher = textPattern.matcher(inputFromField); 
    System.out.println("Inside validation method!!"); 
    if (!nameMatcher.matches()) { 
     System.out.println("NO MATCH!!!"); 
     FacesMessage msg = new FacesMessage(
       Your name cannot contain special characters); 
     throw new ValidatorException(msg); 
    } 
} 

आप मैं सत्यापन विधि के अंदर पाने के लिए जब मैं आदानों कि विशेष वर्ण होते हैं की कोशिश का प्रबंधन देख कलाकार जैसे: जी #^आर $> ', ... और मैं उस संदेश को देखता हूं जो कंसोल में इसके बारे में सलाह देता है, लेकिन मुझे इनपुट फ़ील्ड के बगल में पृष्ठ पर प्रदर्शित संदेश पर नहीं दिखाई देता है। वैसे: मैंने यह भी देखा कि जब मैं खाली इनपुट देता हूं तो मुझे कोई सत्यापन संदेश नहीं दिखाई देता है और मैंने इसे "सत्य" बना दिया है। मैंने त्रुटि लॉग और कंसोल भी चेक किया है, लेकिन मुझे कोई अपवाद नहीं है जो मुझे सुराग दे सकता है (बस चेतावनी संदेश जिसे मैंने उपरोक्त चिपकाया है)। मैं जेएसएफ 2.0 के साथ एक भिखारी हूं। यह तीसरा दिन है, मैं इस समस्या से फंस गया हूं, मुझे इसे हल करने के बारे में पता नहीं है। क्या मुझे किसी एक्सएमएल को कॉन्फ़िगर करने की आवश्यकता है? क्या मुझे किसी इंटरफ़ेस को लागू करने की आवश्यकता है? किसी भी विधि को ओवरराइड करें? ... अगर कोई इसे देख सके और मुझे हाथ दे तो मैं बहुत खुश हूं। अग्रिम में आपके समय पढ़ने के लिए बहुत बहुत धन्यवाद।

उत्तर

5

<h:message><h:inputText> के अंदर घोंसला नहीं होना चाहिए। उन्हें एक दूसरे के बगल में रखो।

+0

बलुससी दोस्त, बहुत बहुत धन्यवाद। अंततः मैंने समस्या को ठीक किया :) यह विशेषता के लिए संदेश को घटक को जोड़ने का ख्याल रखता था। तो मेरे मामले में संदेश को घोंसले की जरूरत नहीं थी। मैं यह भी ध्यान देता हूं कि ग्रहण अब उस क्षेत्र के बगल में एक छोटा लिफाफा प्रदर्शित करता है ताकि सलाह दी जा सके कि उसके पास एक सत्यापन संदेश है। अंत में :) फिर से tnx। – sfrj

+0

आपका स्वागत है। – BalusC

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