0

ユーザーが入力するフォームで速度を使用して生成された .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 開発はこれまであまり行ったことがありません。

4

1 に答える 1

0

Java および Velocity ページはサーバー側で実行されます。ユーザーがフォームに何かを入力すると、Java/Velocity コードが HTML ページの生成を完了してからずっと後にブラウザで発生します。

したがって、JavaScript で完全に終了日を計算するか、AJAX 要求を使用して startDate と日数をサーバーに送信し、Java で終了日を計算して応答に送信し、この日付を応答から取得する必要があります。 AJAX 応答ハンドラーを作成し、ページで更新します。

于 2012-07-27T19:30:27.473 に答える