【问题标题】:Java web application form validation implimentationJava web应用表单验证实现
【发布时间】:2010-11-18 20:40:07
【问题描述】:

我必须在 Java Web 应用程序的表单字段中添加额外的验证规则。 我有一个规则来验证输入的表单字段值是有效员工 ID 的值。

但现在我想验证该值是表单/网络用户的员工 ID,还是表单/网络用户的员工 ID。换句话说,员工可以根据自己的员工 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。所以我可以通过比较两个对象来确保登录的用户监督事件。

【问题讨论】:

    标签: java model-view-controller web-applications


    【解决方案1】:

    你提到的最后一件事听起来不错。

    我还会在 processEventBadge 中调用 validateEventBadge 方法。

    用户对象的传递是一件容易的事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多