0

各学生の出席を更新する必要があるモジュールがあります。コードは次のとおりです。

public void updateDailyAttendance(ActionRequest areq, ActionResponse aRes) throws Exception{ 

int totalEmployees = EmployeeLocalServiceUtil.getEmployeesCount();
String attendanceValue = getAttendanceValue(areq);
//long attPKey = CounterLocalServiceUtil.increment(Employee.class.getName());
for (int i = 0; i < totalEmployees; i++) {
// use attendanceValue to update employee entry
//String attendanceValue = getAttendanceValue(areq);
// parameterValue is value of radio button parameter


long attPKey = CounterLocalServiceUtil.increment(Employee.class.getName());

Attendance newAttendanceInstance = new AttendanceImpl();
newAttendanceInstance.setAttId(attPKey);
                            newAttendanceInstance.setAttStatus(attendanceValue);
                        AttendanceLocalServiceUtil.addAttendance(newAttendanceInstance);

} }

 private String getAttendanceValue(ActionRequest areq) {
 Enumeration parameters = areq.getParameterNames();

while (parameters.hasMoreElements()) {
   String parameterName = parameters.nextElement().toString();
if (parameterName.startsWith("updateattendance")) {
    return areq.getParameter(parameterName);
 }
 }
throw new IllegalStateException("Parameter updateattendance cannot be found!!");
}

上記のコードを使用すると、データベースが更新されますが、出席 (最初の従業員に入力された出席/不在は、他の従業員に異なる値 (出席/不在) をマークしても、他の従業員の値として取得されます)

各従業員に入力されたラジオボタンの値が保存されるように、上記のコードをどのように変更すればよいですか?

4

3 に答える 3

1

代わりに、EmpId をキーとして Map を使用し、値として updateattendanc を使用するより良い方法を次に示します。

Map<String, String> mapEmpAttendance = new HashMap<String, String>(); 
while (parameters.hasMoreElements()) {
    String parameterName = parameters.nextElement().toString();
    String value = "";
    if (parameterName.startsWith("updateattendance")) {
            value = areq.getParameter(parameterName);
            map.put(parameterName.substring(16, parameterName.length), value)
    }
 } 
return mapEmpAttendance;
于 2013-04-10T06:10:21.127 に答える