我有一個jsp表單,我必須爲每位員工標記出勤人員並將結果存儲在數據庫中。我打標出席JSP代碼片段如下:將值從單選按鈕傳遞到操作類
<portlet:defineObjects />
<%
List<Employee> EmployeeAttendanceDetails = MISPortalActionUtil.getEmployeeData();
%>
<portlet:renderURL var="viewMarkAttendanceURL"/>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>mark attendance</title>
</head>
<body>
Mark Attendance for Today:
<%= new java.util.Date() %>
<portlet:actionURL name="updateDailyAttendance" var="updateDailyAttendanceURL" />
**<aui:form name="updateDailyAttendance" action="<%=updateDailyAttendanceURL.toString()%>" method="post" >
<portlet:renderURL var="viewEmployeeDataURL"/>
<liferay-ui:search-container delta="20" emptyResultsMessage="No Results Found">
<liferay-ui:search-container-results total="<%= EmployeeAttendanceDetails .size() %>"
results="<%= ListUtil.subList(EmployeeAttendanceDetails , searchContainer.getStart(), searchContainer.getEnd()) %>" />
<liferay-ui:search-container-row modelVar="search"
className="com.test.mis.portal.model.Employee">
<liferay-ui:search-container-column-text name='Employee Name' value='<%=String.valueOf(search.getEmpFname()) + " " + String.valueOf(search.getEmpLname())%>' href="" />
<liferay-ui:search-container-column-text name='Employee Id' value='<%=String.valueOf(search.getEmpId())%>' href="" />
<liferay-ui:search-container-column-text name = "Attendance Status" >
<label>Present</label><input type = "radio" name ='updateattendance + <%=String.valueOf(search.getEmpId())%>' value = "present" />
<label>Absent</label><input type = "radio" name= 'updateattendance + <%=String.valueOf(search.getEmpId())%>' value = "absent"/>
</liferay-ui:search-container-column-text>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator searchContainer="<%=searchContainer %>" paginate="<%=true %>" />
</liferay-ui:search-container>
<input type = "submit" value = "Update"/>
</aui:form>**
而且我用下面的函數來標記出勤: 公共無效updateDailyAttendance(的ActionRequest AREQ,ActionResponse的ARES)拋出異常{
int totalEmployees = EmployeeLocalServiceUtil.getEmployeesCount();
String attendanceValue = getAttendanceValue(areq);
***for (int i = 0; i < totalEmployees; i++) {
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 is not found");
}
的我面臨的問題是,我爲第一名員工(存在/缺席)標記的任何出勤記錄都存儲在其他員工身上。我認爲錯誤在上面的for循環中,我已經斜體。我應該如何糾正這些代碼,以便爲每個員工存儲正確的出勤狀態?
感謝您的回覆。 :)那麼我正在更新考勤表。我將在使用服務構建器時進行您所建議的更改。我是liferay的新人,爲我的實習做這個項目。我不明白我應該如何迭代jsp中動作類 – 2013-04-09 07:31:10
中的同一個EmployeeAttendanceDetails數組,您正在使用名爲'EmployeeAttendanceDetails'的變量。我不知道你是如何得到它(從你的jsp代碼丟失)。重點是你應該在你的動作類上使用相同的數組 – yannicuLar 2013-04-09 09:44:09
我已經更新了我的代碼,EmployeeAttendanceDetails是一個變量。只需檢查我的代碼上面。 – 2013-04-09 09:54:48