两个相同的字符串不匹配

时间:2018-11-07 20:02:43

标签: java spring spring-boot

我对Java比较陌生,并且连续两个项目都遇到过同样的问题。在我的控制器中,我正在使用if语句比较两个字符串。如果字符串匹配,则运行一组逻辑,如果字符串不匹配,则运行第二组逻辑。使用@ModelAttribute从表单中提取第一个字符串。我有两个明显匹配的字符串,但是没有执行正确的逻辑,我很困惑。

这是我的表格:

<form:form method="POST" action="/registration" modelAttribute="user">
                    <p>
                        <form:label path="firstName">First Name:</form:label>
                        <form:input class="floatRight" path="firstName"/>
                    </p>
                    <p>
                        <form:label path="lastName">Last Name:</form:label>
                        <form:input class="floatRight" path="lastName"/>
                    </p>
                    <p>
                        <form:label path="username">Email:</form:label>
                        <form:input class="floatRight" path="username"/>
                    </p>
                    <p>
                        <form:label path="password">Password:</form:label>
                        <form:password class="floatRight" path="password"/>
                    </p>
                    <p>
                        <form:label path="passwordConfirmation">Password Confirmation:</form:label>
                        <form:password class="floatRight" path="passwordConfirmation"/>
                    </p>
                    <p>
                        <form:select path="role">
                            <form:option value="host" label="Host"/>
                            <form:option value="guest" label="Guest"/>
                        </form:select>
                    </p>
                    <input class="floatRight" type="submit" value="Register"/>
                </form:form>

我要获取的与我的问题相关的值的形式为:使用“ host”或“ guest”的值进行选择。

这是我的控制人:

@RequestMapping(value="/registration", method=RequestMethod.POST)
public String registration(@Valid @ModelAttribute("user") User user, BindingResult result, Model model, HttpSession session) {
    userValidator.validate(user, result);
    if(result.hasErrors() ) {
        return "/main/loginReg.jsp";
    } else {
        if(user.getRole() == "host") {
            System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
            System.out.println("host " + user.getRole());
            System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
            userService.createHostUser(user);
            model.addAttribute("registered", "You have successfully registered your account! Please log in.");
            return "/main/loginReg.jsp";
        } else {
            System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
            System.out.println("guest " + user.getRole());
            System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
            userService.createGuestUser(user);
            model.addAttribute("registered", "You have successfully registered your account! Please log in.");
            return "/main/loginReg.jsp";
        }
    }
}

当我通过表单创建新用户时,即使我使用表单上的“主机”选择,else语句也会被激活。我知道数据正在正确传输,并且else语句正在激活,因为System.out正在打印“来宾主机”。尽管角色不正确,但我的用户已经正确创建。

有人可以解释为什么user.getRole()给我“主机”但与字符串“主机”不匹配吗?我衷心感谢您的见解!

0 个答案:

没有答案