?
Solved

Formatting the date values in a form page

Posted on 2009-06-30
4
Medium Priority
?
195 Views
Last Modified: 2013-11-24
In JSF we have 3 text boxes to capture dayValue,monthValue and yearvalue where the user have option to enter present and future date (MAX 1 year in future).

I am capturing those values with properties dayValue,monthValue and yearvalue in controller and convert to string to a particular format (see below)

SimpleDateFormat date = new SimpleDateFormat();

date.applyPattern("MM/dd/yyyy");

String userEnteredDate = monthValue + "/" + dayValue + "/" + yearValue;

and iam sending this String as date instance (effectiveDate see below)to the back end (DB)

try {

userDate = date.parse(userEnteredDate);

setEffectiveDate(userEnteredDate);







But the problem here is if the user entered date in either any of the options in text boxes.
1. feb 30

2. april 31

3. sep 30

4. nov 30

while sending it as date object to DB its sending as

1. feb 03

2. may date or april 1st

etc etc.


Can i have ur help to resolve this issue so that it should send user entered entry or any common validations are there to resolve this issue (we dont have calender icon to be displayed in JSF )
0
Comment
Question by:Kadhiravan
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 15

Expert Comment

by:spprivate
ID: 24747112
Cant you use simple dropdowns with fixed values for month and year.
That way it saves lots of validation.Just a thought
0
 
LVL 41

Accepted Solution

by:
guru_sami earned 1500 total points
ID: 24747951
Not a JSF guy but one way would be to make a check before you concate all values to userEnteredDate.
i.e.
if(mothnvalue==2(i.e. feb))
{ //logic to check if yearValue is leapyear or not
  //then check if dayValue > 28 or dayValue >29 depeding
}
else if( monthvalue=1|3|5|7|8|10|12)
{ if dayValue >31....not valid
}
else
{ if dayValue >30....not valid
}

Now even if you use DropDownlist you will need such kind of check.
But above pseudo code should work no matter if you use DDL or Textboxes.
0
 
LVL 15

Expert Comment

by:spprivate
ID: 24748263
Use a regular expression to validate the input in javascript.Here is the one I used

^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$

Source

http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5
0
 
LVL 3

Expert Comment

by:VAScott
ID: 24789481
if you can use change to just using 1 text box for the date then you can use the built in validator to validate patterns and values.
<t:inputText maxlength="10" forceId="true" id="mydate" value="#{myobject.mydate}" required="true">
        <f:convertDateTime type="date" pattern="MM/dd/yyyy" />
</t:inputText>

Open in new window

0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
The viewer will learn how to implement Singleton Design Pattern in Java.
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.

764 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question