【问题标题】:jQuery plugin vs Dojo plugin using ModelDriven in Struts 2在 Struts 2 中使用 ModelDriven 的 jQuery 插件 vs Dojo 插件
【发布时间】:2013-01-03 19:58:13
【问题描述】:

我正在使用带有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}"/>

【问题讨论】:

  • 显示完整的 JSP 和动作代码。

标签: java jsp struts2 struts2-jquery model-driven


【解决方案1】:

删除readonly="true",一切都会正常。

readonly 属性默认为false 告诉输入是否是只读的。

【讨论】:

    【解决方案2】:

    我很确定

    name="startDate"
    

    应该改为

    name="yourmodel.startDate"
    

    显示更多代码以获得更好的帮助...

    【讨论】:

    • 在使用 ModelDriven 时不会。它将模型推到值堆栈的顶部。
    • 是的@Quaternion 你是对的......我不会删除让你的评论活着:)
    【解决方案3】:

    Struts 期望将一个值作为与语言环境无关的值发送到服务器,符合 RFC3 339 (yyyy-MM-dd'T'HH:mm:ss) 这是默认的 dojo 标记(现已弃用) 提供:http://struts.apache.org/2.0.12/docs/datetimepicker.html

    您可以只发送:2013-01-03 其余是可选的。

    我使用 mm/dd/yy 的 jQuery Datepicker。要将此格式更改为 struts2 期望的格式,要么更改用于演示的 defaultFormat,要么设置 altFormat 更改提交期间呈现的格式的输入(因此,如果您喜欢“mm/dd/yy”,您可以将 altFormat 设置为“yyyy- mm-dd”,得到想要的效果)。

    http://jqueryui.com/datepicker/#date-formats

    http://api.jqueryui.com/datepicker/

    正如你所看到的,jQuery 很容易做到这一点,如何使用标签来做到这一点......我不知道。欢迎其他人获取此信息并将其扩展为另一个答案,如果可能,请使用特定于标签的技术。

    【讨论】:

      【解决方案4】:

      问题是 Dojo 将 JSP 上的日期值作为 Java 中的日期,而 JQuery 将其作为字符串。

      所以 struts 正在寻找 setDate(String) 而不是 setDate(Date) 寻找 JQuery

      【讨论】:

      • 提交过程中出现问题,所有请求参数均以字符串形式到达。 Struts2 查看属性名称并检查属性类型,然后将尝试应用已知转换(struts2 参数拦截器),如果没有,则该值将不可设置。只是它不能解释每种日期格式(它只考虑一个 afaik,没有自定义转换)。
      猜你喜欢
      • 1970-01-01
      • 2012-07-30
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多