如何从Velocity生成的jspa页面获取值并在Java中使用它?

时间:2012-07-27 18:55:52

标签: java javascript html jsp velocity

我有一个使用velocity生成的.jspa页面,用户填写的表单,我需要从表单中获取数据并在Java中使用它进行计算,但我不知道如何进行此操作。我可以使用任何Java,HTML,Velocity和Javascript,但没有别的。以下是与我的问题相关的代码段:

速度/ HTML:

<form name="dates">
  <table cellspacing= "3">
    <td>Start Date: <input type="text" name="startdate" size="10" maxlength="10" value = $action.convertDateToString($action.getStartDate())></td>
    <td>Work Days: <input type="text" name="workdays" size="6" maxlength="4" value = $action.getWorkDays()></td>
    <td>End Date: <input type="text" name="enddate" size="10" maxlength="10" value = $action.convertDateToString($action.getEndDate())></td>
  </table>
</form>

爪哇:

//converts a Date variable to a String format to be used for display
public String convertDateToString(Date d){
    SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy");
    return formatter.format(d);
}

public int getWorkDays(){
    //needs to get the user entered value for number of works days to use when calculating the end date
    return 10;
}

public Date getEndDate(){
    //calculates the end date based on the number of work days given and the start date
    Calendar startCal = Calendar.getInstance();
    startCal.setTime(getStartDate());
    int duration = getWorkDays();

    for (int i = 1; i < duration; i++) {
        startCal.add(Calendar.DAY_OF_MONTH, 1);
        //loop through by number of work days, skipping Saturday and Sunday
        while (startCal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || startCal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
          startCal.add(Calendar.DAY_OF_MONTH, 1);
      }

      return startCal.getTime();
}

public Date getStartDate(){
    setCurrProj();
    Date startDate = version.getReleaseDate();
    return startDate;
}

所以我有一个表格,其中开始日期用Java计算,用户输入工作天数,然后将该值发送回Java以计算结束日期。我不知道如何从速度获取数据并将其发送回Java。如果计算将在输入工作日数时尽快(即自动)完成,但是如果需要“计算”按钮也是有效的,那将是优选的。我对Java更熟悉,之前没有用Velocity或JSP进行过多的Web开发。

1 个答案:

答案 0 :(得分:0)

Java和Velocity页面在服务器端执行。当用户在表单中输入内容时,在Java / Velocity代码生成HTML页面很久之后,它就会在浏览器中发生。

因此,您需要在JavaScript中完全计算结束日期,或者使用AJAX请求将startDate和天数发送到服务器,使用Java计算结束日期,将其发送到响应,从中获取此日期响应在AJAX响应处理程序中,并在页面中更新它。