週にスケジュールを表示するアプリケーションがあります。すべての予定はデータベースエントリとして保存されます。私はクラス(ScheduleCells
)を使ってこれらのエントリを管理し、それらをBean(ScheduleCellbean
)に格納し、2次元のArrayListを返します。私のindex.jsp
には、このArrayListを取得してスケジュールを記入する次のコードがあります。 index.jsp
では、サーブレットにリクエストを送信します。JSPを使用して遅滞なくスケジュールを読み込むための良い方法
のindex.jsp:
<script type="text/javascript">
fillSchedule = function (w) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "schedule?w=" + w);
xhr.send();
<%
int i;
int j;
int w = 0;
if (session.getAttribute("w") != null) {
w = (Integer) session.getAttribute("w");
}
ScheduleCells sc = new ScheduleCells();
for (i = 0; i < 9; i++) {
for (j = 0; j < 5; j++) {
ScheduleCellBean cell = sc.getCellByHDW(i + 1, j + 1, w);
if (cell.getExists()) {
%>
createNewAppointment(<%= j%>, <%= i%>,
"<%= cell.getSubject_scheduled_subjectabbr()%>",
"<%= cell.getUser_scheduled_userabbr()%>",
"<%= cell.getScheduled_groupname()%>");
<% }}}%>
};
fillSchedule(7);
</script>
ScheduleCellbean:
public class ScheduleCellBean extends ScheduleCells {
private boolean exists = false;
private String scheduled_id;
private String scheduled_date;
private String scheduled_hour;
private String user_scheduled_firstname;
private String user_scheduled_lastname;
private String user_scheduled_username;
private String user_scheduled_password;
private String user_scheduled_userabbr;
private String user_scheduled_subjectname;
private String user_scheduled_subjectabbr;
private String scheduled_groupname;
private String subject_scheduled_subjectname;
private String subject_scheduled_subjectabbr;
private String scheduled_datetimerequest;
private String user_request_firstname;
private String user_request_lastname;
private String user_request_username;
private String user_request_password;
private String user_request_userabbr;
private String user_request_subjectname;
private String user_request_subjectabbr;
//Getters And Setters.
}
ScheduleCellServlet.jsp:
@WebServlet(name = "ScheduleCell", urlPatterns = {"/schedule"})
public class ScheduleCellServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
HttpSession session = request.getSession();
session.setAttribute("w", Integer.parseInt(request.getParameter("w")));
}
//Default HTTP Servlet functions.
}
すべてがうまく動作しますが、私は、サーブレットで働いているので、あります遅延が発生し、スケジュールがロードされないように見えますが、セッション属性をリフレッシュすると適切なスケジュールがロードされます。したがって、私が行った変更(例:fillSchedule(8)
)は、ページをリロードするときにのみ発生します。しかし、私はインタラクティブなスケジュールが好きです。つまり、ユーザーは1週間を選択でき、その週の正しいスケジュールが即座にポップアップします。私の選択したスケジュールを見直しても、私が選んだスケジュールは不足していますが、同じ瞬間に7週目のスケジュールが再ロードされていますが、ページを再表示すると表示されます。
私の質問は次のとおりです。手動でページを更新する必要はありません。
事前にお問い合わせいただきありがとうございます。
非同期にページを更新せずに取得したデータを呼び出すために使用アヤックス。 –
以前にAJAXを使ったことがないので、参考にしてもらえますか? –
http://mycodingtricks.com/jquery/jquery-auto-load-and-refresh-div-on-ajax-call-without-reloading-page/ urlを参考にしてください。 –