我正在使用带有ModelDriven
的Struts2进行表单提交。
当我使用Dojo的datetimepicker
标记并从该标记中选择日期时,表单将正确提交,并在ModelDriven
对象中填充表单值。
但是当在表单中获取jQuery的datepicker
标记并选择日期时,ModelDriven
中的对象具有空值。
如果没有选择日期并且提交了表单,那么它可以正常工作。
我是否需要设置错过才能解决问题?
I had included following jar for JQuery
JQuery的:
<sx:datepicker name="startDate" id="startDate" label="" cssStyle="width:275px; "
minDate="0" displayFormat="dd/mm/y" changeMonth="true" changeYear="true"
readonly="true" value="%{startDate}"/>
答案 0 :(得分:1)
删除readonly="true"
,一切都会正常。
readonly
属性默认为false
,表示输入是否为只读。
答案 1 :(得分:0)
Struts期望将值作为与语言环境无关的值发送到服务器,符合RFC3 339(yyyy-MM-dd'T'HH:mm:ss)这是默认的dojo标记(现已弃用)提供:http://struts.apache.org/2.0.12/docs/datetimepicker.html
你可以发送:2013-01-03其余的是可选的。
jQuery Datepicker我使用mm / dd / yy。要将此格式更改为struts2所期望的格式,请更改用于演示文稿的defaultFormat或设置altFormat,以便将提交的内容更改为提交期间显示的格式(因此,如果您喜欢“mm / dd / yy”,则可以将altFormat设置为“yyyy- mm-dd“并获得所需的效果)。
http://jqueryui.com/datepicker/#date-formats
http://api.jqueryui.com/datepicker/
正如你所看到的,jQuery很容易为此提供,如何使用标签...我不知道。欢迎其他人获取此信息,并在另一个答案中扩展,如果可能的话,使用标签特定技术。
答案 2 :(得分:0)
问题是Dojo将JSP上的日期值视为日期,而 JQuery 将其作为字符串。
所以struts为 JQuery 找到setDate(String)
而不是setDate(Date)
。