Formatting the date values in a form page

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 )
KadhiravanAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

spprivateCommented:
Cant you use simple dropdowns with fixed values for month and year.
That way it saves lots of validation.Just a thought
0
guru_samiCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
spprivateCommented:
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
VAScottCommented:
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java EE

From novice to tech pro — start learning today.