如何从JSP页面到repositoryFormHandler获取Date字段?

时间:2014-01-05 14:41:56

标签: java jsp atg atg-dynamo

我创建了一个JSP,其日期的输入字段接受日期,如1987-12-16

<dsp:input bean="RegisterFormHandler.dob" date="yyyy-MM-dd" size="25" type="text" required="true" />

我试图在RepositoryFormHandler中设置值

public void setDob(SimpleDateFormat dob) 
{
    this.dob = dob;
}

但是set属性没有调用上面的函数,我不知道这里有什么问题。

2 个答案:

答案 0 :(得分:2)

您的问题是,您试图致电setDob(SimpleDateFormat dob),而您的意思是setDob(Date dob)。您没有传递格式,而是传递实际日期。

也就是说,我在ATG中看到了很多例子,当试图通过自由文本字段传递日期时,即使你传递'date'格式,也会在后端产生不必要的错误。大多数实现都会使用类似jQuery DatePicker库的日期格式化日期,并将其作为String值传递给ATG。然后在formhandler中实现一个验证方法,该方法将String解析为有效日期并返回相应的异常。您的上述方法充满危险

答案 1 :(得分:0)

是的,有方法,但大多数人更喜欢:

  1. 在JSP上创建一个简单的输入框而不是desp:input
  2. 那个inout框必须有id或class,使用我们设置一些隐藏在你的jsp中的dsp:input。
  3. 编写使日期为MM / DD / YYYY的jQuery脚本,并使用jQuery设置隐藏的dsp:输入值。
  4. Jsp:-/*dsp:input */

    <dsp:getvalueof var="dateOfBirth" bean="ProfileFormHandler.value.dateOfBirth" />
    

    /*simple input */

    <input type="text" value="${dob}" maxlength="10" class="field text dob" id="accDOB" name="accDOB"></code>
    

    /*jQuery */

        var accDOB = $('#accDOB').val();
        var d = accDOB.split("/");
        var dob = d[1]+'/'+d[0]+'/'+d[2];
        //convert the formate in mm/dd/yy
        $("#dob").val(dob);
    

    <dsp:getvalueof var="dateOfBirth" bean="ProfileFormHandler.value.dateOfBirth" />

    希望这对你有所帮助。