Hello,
Someone might have to jump in and correct me on this but I think that it should just be coming in as a string. As I understand it, the form's action doesn't know that you're using a datepicker in the
form, it only sees a text field with a value (a string). Struts tag libs just generate HTML and shouldn't have any influence on what data type is passed through. Therefore, you should be using the
string setter instead. If you wanted to get this into a date object after, I would just get it as a string and use a date formatter to build your date.
-Tim Orme
Dimitar Vlasev wrote:
Hi all,
I'm using Struts 2.0.14.
I'm experiencing the following problem:
I tried to use datetimepicker in sample application and it worked fine
except that the java.util.Date property does not retrieve the new
value selected in the interface.
I don't have more time today to check this out and will continue
trying to fix it tomorrow.
What's more weird if i have getter for a String property with the same
name I'll get the text that's in the edit box rendered from
<s:datetimepicker />
Here are some snippets from my test application:
struts.xml
-------------------------------
<package name="test" namespace="/" extends="struts-default">
.........
<action name="blah_*" class="test.Test" method="{1}">
<result type="tiles">tiles_test</result>
</action>
the JSP
-------------------
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:head theme="ajax"/>
<div>
<h2> User Details changed </h2>
<s:form action="blah_fetchDate">
<s:textfield name="someText"/>
<s:datetimepicker name="aDate" dayWidth="narrow" weekStartsOn="1"
/>
<s:submit>Submit Date</s:submit>
</s:form>
</div>
the Action (implements RequestAware)
----------------------
private Date aDate = new Date()
public String fetchDate() {
OgnlValueStack valueStack = (OgnlValueStack)
this.request.get("struts.valueStack");
log.info("--------- this.aDate: " + this.aDate.toString());
log.info("--------- vs: aDate: "
+valueStack.findString("aDate"));
log.info("--------- vs: dojo.aDate: "
+valueStack.findString("dojo.aDate"));
return Action.SUCCESS;
}
public Date getADate() {
return aDate;
}
public void setADate(Date date) {
log.info("------------ Date set to: " + date.toString());
aDate = date;
}
public void setADate(String s) {
log.info("------------ this one is called :" + s);
}
console output
--------------------------------------------------
17:37:24,644 INFO [Test] ------------ this one is called :12/3/08
17:37:24,644 INFO [Test] --------- this.aDate: Tue Dec 02 17:37:24 EET 2008
17:37:24,644 INFO [Test] --------- vs: aDate: 12/2/08
17:37:24,644 INFO [Test] --------- vs: dojo.aDate: null
as you can see setADate(Date date) never get's called.
I've checked the request made from the browser (using FF with FireBug)
and the post parameters were fine "aDate" and "dojo.aDate" where both
set to the correct value 12/3/08
I appreciate greatly your help.
Regards.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]