2012-05-29 18 views
7

मैं एक grails परियोजना में काम कर रहा हूँ। मैं अपने आवेदन में केंडो ग्रिड का उपयोग कर रहा हूँ। मुझे "स्टेटटाइमिंग्स" नामक एक डोमेन क्लास बनाने की आवश्यकता है जिसमें दो बार फ़ील्ड स्टार्टटाइम और एंडटाइम शामिल है। मैं उन दो परिवर्तनीय coz के लिए "दिनांक" डेटा प्रकार का उपयोग नहीं कर सकता, मुझे आवश्यक समय प्रारूप है hh: mm। मैं इसके लिए कोई प्लगइन स्थापित नहीं करना चाहता हूं। यह अब के लिए मेरे डोमेन है:समय क्षेत्र grails डोमेन कक्षा

class StatTimings{ 

???? startTime 
???? endTime 
Date date 
AutoPosting autoPosting 
Status status 

static constraints = { 
} 

enum Status{ACTIVE,INACTIVE} 
enum AutoPosting{SERVICE_CHARGE,STAT_CHARGES,BOTH} 

}

वहाँ किसी भी तरह से मैं केवल समय को स्वीकार करने के लिए अपने क्षेत्र बना सकते है?

उत्तर

1

java.sql.Time वर्ग उपवर्गों java.util.Date और यह लगभग एक ही बात करता है और यह नीचे के रूप में एक कस्टम toString कार्यान्वयन जोड़ता है:

public String toString() { 

    int hour = super.getHours(); 
    int minute = super.getMinutes(); 
    int second = super.getSeconds(); 
    String hourString; 
    String minuteString; 
    String secondString; 

    if (hour < 10) { 
     hourString = "0" + hour; 
    } else {   
     hourString = Integer.toString(hour); 
    } 
    if (minute < 10) { 
     minuteString = "0" + minute; 
    } else {   
     minuteString = Integer.toString(minute); 
    } 
    if (second < 10) { 
     secondString = "0" + second; 
    } else {   
     secondString = Integer.toString(second); 
    } 
    return (hourString + ":" + minuteString + ":" + secondString); 
} 

तो मुझे लगता है कि आप गतिशील रूप से एक जोड़ सकता है कि बूटस्ट्रैप पर डेट क्लास की विधि और आवश्यकता होने पर इसे आमंत्रित करें।

आप पूरा स्रोत here देख सकते हैं।

2

आप दिनांक का उपयोग कर सकते हैं और इसे getStartTime() विधि में SimpleDateFormat की सहायता से प्रारूप में परिवर्तित कर सकते हैं। इस तरह आप इसके दिनांक भाग को अनदेखा करते हैं।

class StatTimings { 
    ... 

    def getStartTime() { 
     return new SimpleDateFormat("hh:mm").format(this.startTime); 
    } 

} 
3

आसान जारी रहती है और बाँध (HTTP पैरामीटर से) के लिए इस वर्ग के उदाहरण बनाने के लिए, मैं दो पूर्णांक फ़ील्ड के रूप में हर बार प्रतिनिधित्व चाहते हैं और getStartTime() और getEndTime() जैसे कुछ सहायक विधि जोड़ें। String (आज के दिन के सेट के साथ) के बजाय आपको Date वापस करने के लिए इन सहायकों को बदलना चाहें, यदि आपको प्रारंभ और समाप्ति समय के बीच अंतर की गणना करने की तरह कुछ करने की आवश्यकता है।

class StatTimings { 

    static transients = ['startTime', 'endTime'] 

    Integer startHours 
    Integer startMins 

    Integer endHours 
    Integer endMins 

    private String formatTime(Integer hours, Integer mins) { 
    String formattedHours = hours < 10 ? "0$hours" : hours.toString() 
    String formattedMins = mins < 10 ? "0$mins" : mins.toString() 
    "$formattedHours:$formattedMins" 
    } 

    String getStartTime() { 
    formatTime(startHours, startMins)   
    } 

    String getEndTime() { 
    formatTime(endHours, endMins) 
    } 

    static constraints = { 
    startHours range: 0..23 
    endHours range: 0..23 

    startMins range: 0..59 
    endMins range: 0..59 

    // TODO: add a custom validator that checks the end time is after start time 
    } 
} 
संबंधित मुद्दे