【发布时间】:2013-09-02 19:28:15
【问题描述】:
这是我的登录页面的支持 bean。为什么调用logIn() 方法后会保留值?我的意思是在我提交表单并返回登录页面后,我之前输入的用户名已经存在。我认为通过使用@RequestScoped 注释不会保留值。
@Controller
@ManagedBean
@RequestScoped
public class LogInBean implements Serializable {
private static final long serialVersionUID = 2092611147930386873L;
@Autowired
private UserService userService;
private String username;
private String password;
private boolean rememberMe;
public String logIn() {
return "index?faces-redirect=true";
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isRememberMe() {
return rememberMe;
}
public void setRememberMe(boolean rememberMe) {
this.rememberMe = rememberMe;
}
}
【问题讨论】:
-
对于
@RequestScoped,情况总是如此,只要您不注入任何具有“更高”范围的bean,它们可以使数据保持更长时间。我假设它只是保存输入的浏览器。尝试使用其他用户名。在这种情况下,浏览器无法再决定显示哪一个,应该将该字段留空。 -
似乎总是保存最新的输入,记住我复选框也是如此。我还注意到在调用
logIn()方法时会创建 cookie。 -
需要一个 cookie,这就是会话 ID 的存储方式。