2011-11-06 20 views
11

जेएसएफ 2.2.0 का उपयोग करना।प्राइमफ़ेस कैलेंडर: गलत दिनांक प्रविष्टि

सभी तारीखों के लिए, यह एक दिन को हटाने लगता है। जब मैं 8 नव पर क्लिक करता हूं, तो यह 11/08/2011 प्रदर्शित करता है। लेकिन फिर यह मेरे प्रबंधित क्षेत्र में मेरे दिनांक क्षेत्र में 7 नवंबर, 2011 को स्टोर करता है।

मैं सिंगापुर में रहता हूं, सोच रहा हूं कि यह टाइमज़ोन के साथ कोई समस्या है या नहीं।

+1

सका हो। यदि नहीं, तो यह प्राइमफेस की समस्या हो सकती है। यह काफी छोटी है ... वैसे भी, 'दिनांक' का उपयोग न करें, इसके बजाय 'कैलेंडर' का उपयोग करें। – zeller

+0

एक दिनांक फ़ील्ड एक विशिष्ट तिथि भी संग्रहीत नहीं कर सकता है। यह सब स्टोर एक पूर्णांक है। उस तारीख को उस पूर्णांक को स्थानांतरित करने के विभिन्न तरीके हैं, जहां आपकी समस्या आ रही है। – MatsT

+0

@ ज़ेलर मुझे आपकी सिफारिश में दिलचस्पी है java.util.Date का उपयोग न करें। ऐसा क्यों है? – 8bitjunkie

उत्तर

-1

क्या आपने timezone और locate विशेषता सेट करने का प्रयास किया है? अन्यथा, आप कनवर्टर ऑब्जेक्ट बना सकते हैं जो तिथि को परिवर्तित करता है। अपने web.xml

<context-param> 
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name> 
    <param-value>true</param-value> 
</context-param> 
23

कोशिश इस जोड़ने: यह एक ट्यूटोरियल एक कस्टम कनवर्टर तैयार करना है।

संक्षेप में: p: अनुसूची काम केवल अच्छी तरह से जब निम्नलिखित मानकों सेट कर रहे हैं:

-Duser.timezone=UTC

<context-param> 
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name> 
    <param-value>true</param-value> 
</context-param> 
+0

यह निश्चित रूप से एक टाइमज़ोन समस्या है। आप यूटीसी में अपना सर्वर चला सकते हैं (होना चाहिए)। प्राइमफेस आपकी तिथि को क्षेत्रीयकृत करेगा और इसे उपयोगकर्ता समय में परिवर्तित करेगा। आप अपने सर्वर को "-Duser.timezone = UTC" के साथ चला सकते हैं। संदर्भ param को इसे ठीक करना चाहिए। –

+0

पुष्टि की, टाइमज़ोन मुद्दा। संदर्भ पैराम ने इसे ठीक किया (जेएसएफ 2.2.5, प्राइमफेस 4.0)। – Gilberto

0

मैं सिर्फ web.xml में निम्नलिखित पैरामीटर को शामिल किया है और इस मुद्दे को तय हो गई है। मैंने सर्वर शुरू करते समय -user.timezone = UTC जैसे किसी भी कमांड को शामिल नहीं किया था, फिर भी यह समस्या ठीक कर दी गई है।

javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE सच

सादर खलील

0

मैं Wildfly 8 और पीएफ 5.0.RC1 और केवल एक चीज है कि चाल मेरे समय क्षेत्र सेटिंग गया था के लिए किया था का उपयोग कर रहा कैलेंडर कुछ भी नहीं ...

<p:calendar timeZone = "" /> 

यह नहीं पता कि यह एक उचित समाधान है, तो एक कामकाज की तरह लगता है, लेकिन यह स्थानीय रूप से ठीक से तैनात और तैनात किया गया।

2

आप primefaces 5 उपयोग कर रहे हैं, अपने अनुसूचक में:

<p:schedule ...ignoreTimezone="false" /> 
0

शायद यह इसलिए है क्योंकि आप घंटे सम्मिलित नहीं किया। उदाहरण के लिए इस मामले में

<p:calendar id="dateFromCalendar" 
    value="#{platform.frameBean.dateFrom}" showOn="button" 
    pattern="dd-MM-yyyy" timeZone="Europe/Warsaw"> 
</p:calendar> 

वास्तविक दिन के 00:00 के रूप में समय आएगा। और क्योंकि टाइमज़ोन (-02: 00), वास्तविक दिन से पहले दिन 22:00 के रूप में दिखाई देगा। ऐसा करने के लिए सही बात है,

<p:calendar id="dateFromCalendar" 
    value="#{platform.frameBean.dateFrom}" showOn="button" 
    pattern="dd-MM-yyyy HH:mm" timeZone="Europe/Warsaw"> 
</p:calendar> 

घंटे दिखाई देगा तो समय क्षेत्र सही गणना

0

अपने कैलेंडर घटक में कर देगा, एक कनवर्टर जोड़ सकते हैं और आपके समय क्षेत्र जैसे संकेत मिलता है

<p:calendar id="date"> 
    <f:convertDateTime timeZone="Asia/Singapore"></f:convertDateTime> 
</p:calendar 
संबंधित मुद्दे