Мне нужно добавить дополнительное правило проверки в поле формы в веб-приложении Java.
У меня есть правило, подтверждающее, что введенное значение поля формы соответствует действительному идентификатору сотрудника.
Но теперь я хотел бы убедиться, что это значение является либо идентификатором сотрудника формы / веб-пользователя, либо сотрудника формы / веб-пользователя. Другими словами, сотрудник может ввести событие против своего идентификатора сотрудника, а руководитель может ввести событие против своего идентификатора сотрудника, а также идентификатора сотрудника, которого он контролирует. Вот что у меня есть.
public Object insert(HttpServletRequest request) {
OopEvent event = new OopEvent();
STKUser authenticatedUser = (STKUser) request.getSession().getAttribute("STKUserSession");
try {
// populate bean with setters
processEventBadge (request, event);
processEventEventTypeID(request, event);
processEventStartDate (request, event);
processEventEndDate (request, event);
processEventHours (request, event);
if (isSucces()) {
EventDAO.insert(event, authenticatedUser);
}
else {
setError(FORM_RESULTS, "Error - There are error(s) in your input. See below.");
LOGGERI.log(Level.INFO, "Form input errors inserting OopEvent", authenticatedUser);
}
} catch (DAOException e) {
setError(FORM_RESULTS, e.getMessage());
}
return event;
}
// Field processors
// ---------------------------------------------------------------------------
public void processEventBadge(HttpServletRequest request, OopEvent event) throws DAOException {
String _badge = FormUtil.getFieldValue(request, FIELD_BADGE);
if (!"".equals(_badge) && _badge != null) {
try {
event.setBadge(_badge);
event.setEventUser(STKUserDAO.getValidEmployeeByBadge(_badge)); //Returns user bean
//should make a call to validate event employee ID HERE?????????? If so I need the send eventUser and authenticatedUser but authenticatedUser is not available here only the eventUser (only if the badge number is of a valid employee)
}
catch (ValidatorException e) {
setError(FIELD_BADGE, e.getMessage());
}
catch (DAOException e) {
setError(FIELD_BADGE, e.getMessage());
throw new DAOException(e.getMessage());
}
}
else {
setError(FIELD_BADGE, "OopEvent Owner badge is required");
}
}
Должен ли я реализовать эту логику в методе insert
, processEventBadge
или validateEventBadge
? Или где-то еще ?? Я думаю, что я должен поместить вызов в processEventBadge
в validateEventBadge
метод, но это потребовало бы, чтобы я передал объект authenticatedUser обоим методам. Пользовательский объект содержит идентификатор сотрудника и идентификатор сотрудника руководителя. Поэтому я мог убедиться, что зарегистрированный пользователь наблюдает за событием, сравнивая два объекта.