【问题标题】:Defect Tracking WebApp using Spring mvc [closed]使用 Spring mvc 的缺陷跟踪 WebApp [关闭]
【发布时间】:2014-09-16 05:40:47
【问题描述】:

这是我的 spring mvc web 应用程序的登录屏幕。我需要捕获所有可能的错误条件并存储到数据库中。就像错误检测系统一样。

例如,如果用户在未填写表单的情况下单击登录按钮,则任何提供的错误条件都不应保存在错误表中。

如果它没有提供密码,它应该保存没有提供的密码。

@RequestMapping(value = { "/do-login" }, method = RequestMethod.POST)
    public String login(@ModelAttribute(value = "user") User user) {
        process(user);
        return "success";
    }

    public void process(User user) {

        List<User> users = userService.findAll();
        for (User u : users) {
            if (!u.getUserName().equals(user.getUserName())) {
                IssueDetail detail = new IssueDetail();
                detail.setSummary("user name");
                detail.setDescription("wrong user name entered");
                issueDetailService.save(detail);
            } else if (!u.getPassword().equals(user.getPassword())) {
                IssueDetail detail = new IssueDetail();
                detail.setSummary("password");
                detail.setDescription("wrong password entered");
                issueDetailService.save(detail);
            } else if (!u.getUserType().equalsIgnoreCase(user.getUserType())) {
                IssueDetail detail = new IssueDetail();
                detail.setSummary("user type");
                detail.setDescription("wrong user type entered");
                issueDetailService.save(detail);
            }
        }

    }

我试过上面的代码.... 当上述循环运行时,如果用户没有输入任何字段,则循环将在数据库中保存任何 if 语句 3 次。

有没有其他方法可以做到这一点。

测试用例

Username  password   type
-------------------------
  N           N        N      =NULL
  Y           N        N      = WRONG PASS & TYPE
  Y           Y        N      = WRONG TYPE.
  N           Y        Y      = WRONG USER.
  N           N        Y      = WRONG PASSWORD & TYPE.

【问题讨论】:

  • 那么你遇到了什么问题?

标签: java spring spring-mvc defects


【解决方案1】:

尝试下面的代码行,在 process 方法中代替你的 for 循环。

                            List<User> users = userService.findAll();
            boolean isUserNameExist = false;
            boolean isPasswordExist = false;
            boolean isUserTypeExist = false;
            for (User u : users) {
                if (u.getUserName().equals(user.getUserName())) {
                    isUserNameExist = true;
                    break;
                } 
            }

            for (User u : users) {
               if (u.getPassword().equals(user.getPassword())) {
                    isPasswordExist =true;
                    break;
               } 
            }
            for (User u : users) {
                if (u.getUserType().equalsIgnoreCase(user.getUserType())) {
                    isUserTypeExist = true;
                    break;
                }
            }
            IssueDetail detail = new IssueDetail();
            if(!isUserNameExist){
                detail.setSummary("user name");
                detail.setDescription("wrong user name entered");
            }
            if(!isPasswordExist){
                detail.setSummary(detail.getSummary()+" password");
                detail.setDescription(detail.getDescription()+" wrong password entered");
            }
            if(!isUserTypeExist){
                detail.setSummary(detail.getSummary() +" user type");
                detail.setDescription(detail.getDescription() +" wrong user type entered");
            }
            issueDetailService.save(detail);

【讨论】:

  • 代码有问题,总是保存“输入错误的用户名”的情况。
  • 已更新,条件添加错误。
  • 您能否提供您的测试用例,我的意思是您想要实现的输入和期望输出?
  • 更新了问题。
猜你喜欢
  • 2013-01-18
  • 2010-12-26
  • 2021-10-13
  • 2011-05-06
  • 2013-12-07
  • 2011-05-27
  • 2012-01-04
  • 1970-01-01
  • 2010-10-13
相关资源
最近更新 更多