ajax - कनवर्टर के साथ प्राइफ़ास कैलेंडर, अजाक्स "वेलकम चेंज" ईवेंट पर सही तरीके से अपडेट नहीं होता है




jsf primefaces (2)

मैं चाहता हूं कि मेरा p:calendar को कैलेंडर पॉपअप में एक तिथि पर क्लिक करके, साथ ही टेक्स्ट इनपुट फ़ील्ड में सीधे तिथि संपादित करके दोनों काम कर सकें

यह ठीक काम करता है:

        <p:calendar value="#{myBackingBean.date}">
            <p:ajax event="valueChange" listener="#{myBackingBean.updateDate()}" />
            <p:ajax event="dateSelect" listener="#{myBackingBean.selectDate()}" />
        </p:calendar>

हालांकि, जैसे ही मैं एक कनवर्टर (नीचे देखें) जोड़ता हूं, नई तिथि अब "मान बदलें" इवेंट के लिए सेट नहीं की जाती है (जब पाठ को पाठ क्षेत्र में कुंजीपटल द्वारा दिनांक संपादित किया जाता है), भले ही नई तारीख सही रूप से कनवर्ट हो, लेकिन बैकिंग बीन में सेट की जाने वाली तारीख पुरानी मान है, न कि एक को मैंने पाठ फ़ील्ड में संपादित किया है:

        <p:calendar value="#{myBackingBean.date}">
            <f:converter converterId="myLocalDateConverter"/>
            <p:ajax event="valueChange" listener="#{myBackingBean.updateDate()}" />
            <p:ajax event="dateSelect" listener="#{myBackingBean.selectDate()}" />
        </p:calendar>

मैं यह कैसे मिलकर काम कर सकता हूं?


मुझे समस्या का कारण मिला: कनवर्टर इनपुट फ़ील्ड से पाठ प्राप्त कर रहा था, जो इसे सही ढंग से परिवर्तित करने में सक्षम नहीं था। जाहिरा तौर पर यह मानक जेएसएफ जीवनचक्र के रुकावट की ओर जाता है और नए मूल्य के बजाय पुरानी कीमत निर्धारित की जाती है। ठीक से स्वरूपित इनपुट के साथ, पूरी चीज अपेक्षा के अनुरूप काम करती है


यह देखें। https://www.javacodegeeks.com/2015/06/utilizing-the-java-8-date-time-api-with-jsf-and-java-ee-7.html

यह कस्टम कनवर्टर को लागू करने के लिए कैलेंडर का कनवर्टर विशेषता का उपयोग कर रहा है। यह उदाहरण विशेष रूप से जावा 8 दिनांक एपीआई के लिए है आप अपने कोड को तदनुसार लिख सकते हैं।





converter