即使是简单的System.out.println()
也会多次执行。而循环则是一样的。可能是什么原因?我不知道有什么其他信息可以帮到你,所以请告诉我你是否需要了解其他信息。
这是我的代码:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="db.DBManager, data.Klausur, data.Benutzer, common.Tuple, common.Berechtigung, java.util.ArrayList, java.util.HashMap, java.util.Date, java.text.SimpleDateFormat"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="fragments/head-section.jspf"%>
<title>CHEAT - Klausur wählen</title>
</head>
<%
int benutzerID = Integer.parseInt(session.getAttribute("benutzerID").toString());
%>
<script type="text/JavaScript">
if (<%=benutzerID%><=0) {
$(document).on('pagebeforeshow', function() {
window.location.href = "index.jsp";
});
}
</script>
<%
session.setAttribute("benutzerID",benutzerID);
Object kID = session.getAttribute("klausurID");
int alterKlausurID = 0;
if(kID != null) {
alterKlausurID = Integer.parseInt(session.getAttribute("klausurID").toString());
session.setAttribute("klausurID", alterKlausurID);
}
%>
<body>
<jsp:useBean id="dbm" class="db.DBManager"></jsp:useBean>
<%
// Änderungen an der Datenbank (eintragen, ändern, löschen) werden vorgenommen
//alterMsg: Klausur erfolgreich eingetragen etc.
String alterMsg = "";
String alterName = request.getParameter("name");
String alterDateString = request.getParameter("date");
String participants = request.getParameter("teilnehmer");
// Die User-Rechte werden abgefragt
ArrayList<Benutzer> users = new ArrayList<Benutzer>(dbm.getAllUsers());
System.out.println("Anzahl Benutzer: "+users.size());
HashMap<Integer,Berechtigung> radios = new HashMap<Integer,Berechtigung>();
for (int i = 0; i < users.size(); i++) {
Benutzer b = users.get(i);
int id = b.getBenutzerID();
Berechtigung userRight = Berechtigung.nix;
try{
userRight = Berechtigung.valueOf(request.getParameter(""+id));
//System.out.println(">>DEBUG userRight: "+userRight.toString());
}catch(Exception e){}
switch (userRight)
{
case admin:
radios.put(new Integer(id), Berechtigung.admin);
//System.out.println("UserRecht von "+id+" geändert auf admin");
break;
case korrektur:
radios.put(new Integer(id), Berechtigung.korrektur);
//System.out.println("UserRecht von "+id+" geändert auf korrektur");
break;
case statistik:
radios.put(new Integer(id), Berechtigung.statistik);
//System.out.println("UserRecht von "+id+" geändert auf statistik");
break;
default: //nix
radios.put(new Integer(id), Berechtigung.nix);
//System.out.println("UserRecht von "+id+" geändert auf nix");
break;
}
//System.out.println(">>DEBUG ID: "+id);
}
//Rechte eintragen
//dbm.alterRights(alterKlausurID, radios);
boolean isMsg = false;
try {
boolean delete = Boolean.parseBoolean(request.getParameter("deleteExam"));
if (delete) {
dbm.deleteExam(alterKlausurID);
alterMsg = "Klausur erfolgreich gelöscht!";
isMsg = true;
} else if (alterKlausurID == -1) {
dbm.createExam(alterName, alterDateString, benutzerID, radios, participants);
alterMsg = "Klausur erfolgreich eingetragen!";
isMsg = true;
} else if (alterKlausurID > 0) {
dbm.alterExam(alterKlausurID, alterName, benutzerID, alterDateString, radios, participants);
alterMsg = "Klausur erfolgreich geändert!";
isMsg = true;
}
} catch (Exception e) {
}
%>
<!-- HEADER -->
<%@ include file="fragments/header.jspf"%>
<!-- CONTENT -->
<div data-role="content" data-theme="b">
<table id="selectExamHeading">
<tr>
<td>
<h1>Klausurauswahl</h1>
</td>
<td id="selectExamHeadingRight">
<!-- "Neue Klausur"-Button --> <jsp:element name="a">
<jsp:attribute name="class">createExamLink</jsp:attribute>
<jsp:attribute name="href">administrateExam.jsp?klausurID=-1</jsp:attribute>
<jsp:attribute name="data-role">button</jsp:attribute>
<jsp:attribute name="data-ajax">false</jsp:attribute>
<jsp:attribute name="data-icon">plus</jsp:attribute>
<jsp:body>Klausur erstellen</jsp:body>
</jsp:element>
</td>
</tr>
</table>
<%
if (isMsg) { %>
<p class="msg"><div class="msgBg"></div><span class="msgInner"><%=alterMsg%></span></p>
<% } %>
<%
/*
* Es werden alle Klausuren geladen, die der aktuelle Benutzer korrigieren darf.
* Für jede geladene Klausur wird ein Button erstellt
* das Attribute "data-ajax" bei Links dient dazu, dass der Datepicker auf der nächsten Seite
* sofort geladen wird (nicht erst nach Refresh der Seite) [Workaround]
*/
String output = "";
ArrayList<Tuple<Klausur,Benutzer>> list = new ArrayList<Tuple<Klausur,Benutzer>>(dbm.getExamsForUserID(benutzerID));
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
Klausur k = list.get(i).getFirst();
String name = k.getName();
String kAnzeigeName;
int l = name.length();
if (l > 41) {
kAnzeigeName = name.substring(0,18) + "..." + name.substring(l-18, l);
} else {
kAnzeigeName = name;
}
int klausurID = k.getKlausurID();
Benutzer b = list.get(i).getSecond();
String erstellerName = b.getName()+", "+b.getVorname();
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
String datum = sdf.format(k.getDate().getTime()).toString();
%>
<jsp:element name="div">
<jsp:attribute name="class">selectExamDiv</jsp:attribute>
<jsp:attribute name="data-role">controlgroup</jsp:attribute>
<jsp:attribute name="data-type">horizontal</jsp:attribute>
<jsp:body>
<jsp:element name="a">
<jsp:attribute name="class">bigSelectExamLink</jsp:attribute>
<jsp:attribute name="href">correctExam.jsp?klausurID=<%=klausurID%></jsp:attribute>
<jsp:attribute name="data-role">button</jsp:attribute>
<jsp:attribute name="data-ajax">false</jsp:attribute>
<jsp:body><%=kAnzeigeName%></br>
<jsp:element name="span">
<jsp:attribute name="class">examSubtitleName</jsp:attribute>
<jsp:body><%=erstellerName%></jsp:body>
</jsp:element>
<jsp:element name="span">
<jsp:attribute name="class">examSubtitleDate</jsp:attribute>
<jsp:body><%=datum%></jsp:body>
</jsp:element>
</jsp:body>
</jsp:element>
<jsp:element name="a">
<jsp:attribute name="class">smallSelectExamLink</jsp:attribute>
<jsp:attribute name="href">administrateExam.jsp?klausurID=<%=klausurID%></jsp:attribute>
<jsp:attribute name="data-role">button</jsp:attribute>
<jsp:attribute name="data-ajax">false</jsp:attribute>
<jsp:attribute name="data-icon">wrench-costum-big</jsp:attribute>
<jsp:attribute name="data-iconpos">bottom</jsp:attribute>
</jsp:element>
<jsp:element name="a">
<jsp:attribute name="class">smallSelectExamLink</jsp:attribute>
<jsp:attribute name="href">statistics.jsp?klausurID=<%=klausurID%></jsp:attribute>
<jsp:attribute name="data-role">button</jsp:attribute>
<jsp:attribute name="data-ajax">false</jsp:attribute>
<jsp:attribute name="data-icon">stats-costum-big</jsp:attribute>
<jsp:attribute name="data-iconpos">bottom</jsp:attribute>
<jsp:body></jsp:body>
</jsp:element>
</jsp:body>
</jsp:element>
<%
}
// Falls der aktuelle Benutzer bei keiner Klausur als Korrektor eingetragen ist, erscheint nur "Neue Klausur"
} else {
output = "Sie sind bei keiner Klausur als Korrektor eingetragen!";
out.println(output);
}
%>
<!-- FOOTER -->
<%@ include file="fragments/footer-small.jspf"%>
</div>
<!-- Die DB-Verbindung muss noch geschlossen werden -->
<%@ include file="fragments/closeConnection.jspf"%>