我必须在Java Web应用程序的表单字段中添加其他验证规则。 我有一个规则来验证输入的表单字段值是否是有效的员工ID。
但是现在我想验证这个值是表单/ web用户的员工ID还是表单/ web用户的员工。换句话说,员工可以针对他们自己的员工ID输入事件,并且主管可以针对他们自己的员工ID以及他们监督徽章的员工的ID输入事件。这就是我所拥有的。
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对象传递给两个方法。用户对象包含员工ID和主管员工ID。因此,我可以通过比较两个对象来确保登录用户监督事件。
答案 0 :(得分:0)
你提到的最后一件事听起来不错。
我还会在processEventBadge中调用一个validateEventBadge方法。
传递用户对象很容易。