代码之家  ›  专栏  ›  技术社区  ›  jeff

javabean中的日期或字符串声明

  •  0
  • jeff  · 技术社区  · 14 年前

    我应该在javabean中声明一个属性,该属性将用户在HTML表单中键入的日期值作为字符串或日期来保存吗?

    但是,我觉得应该声明为日期,因为我对所有表单数据都执行服务器验证,如果日期没有验证,当我将表单bean传递回jsp视图进行更正时,就会丢失用户试图输入的日期值。

    如果我声明为一个字符串,如果日期没有被验证,我可以在bean中设置字符串值并将bean传递回视图,用户可以看到他们输入的错误内容。

    在我的html表单中,我要求日期为mm/dd/yyyy,而在DAO中,我使用的是Oracle日期。我不能使用hibernate之类的,因为这是公司内部网。

    我应该遵循的最佳实践“模式”是什么??

    3 回复  |  直到 14 年前
        1
  •  1
  •   BalusC    14 年前

    把它当作 Date

    <input name="date" value="${empty bean.date ? fn:escapeXml(param.date) : bean.date}" />
    

    JSTL fn:escapeXml() 只是为了避免 XSS attacks

    为了更进一步,您可以添加一个带有 Map<String, Object> params 它包含提交值或最终/验证值,具体取决于验证结果。

    <input name="date" value="${fn:escapeXml(bean.params.date)}" />
    
        2
  •  0
  •   TheLQ    14 年前

    把它们都储存起来。它以字符串的形式出现,所以把它保存在某个地方。然后验证它。如果失败,则将原始字符串传递回jsp页面。

        3
  •  0
  •   Affe    14 年前

    使用javascript掩码不让不可解析的日期一开始就击中服务器,这是我见过的最常见的模式。您还可以在开源javascript库中找到许多日期选择器。如果有人知道关闭javascript或以其他方式破坏客户端验证,他们可能会处理无法将其不可解析的日期字符串返回错误视图的问题。