gpt4 book ai didi

java - Struts2 如果标签不起作用

转载 作者:行者123 更新时间:2023-12-02 06:53:00 26 4
gpt4 key购买 nike

我正在编写一个登录页面,当无效用户尝试登录时,我会重定向到错误参数等于 1 的登录操作。

private String username;
private String password;
private int error;
@Override
public String execute()
{
//validate user input
if (username == null || password == null || username.isEmpty() || password.isEmpty())
{
error = 2;
return LOGIN;
}

LoginModel loginModel = new LoginModel(username, password);

HttpBuilder<LoginModel, User> builder = new HttpBuilder<LoginModel, User>(User.class);
builder.setPath("service/user/authenticate");
builder.setModel(loginModel);

IHttpRequest<LoginModel, User> request = builder.buildHttpPost();
User user = request.execute(URL.BASE_LOCAL);

//redirects to login page
if (user == null)
{
error = 1;
return LOGIN;
}
else
{
return SUCCESS;
}
}

//Getters/Setters

如果无效用户尝试登录,它将重定向到 localhost:8080/app/login.action?error=1。我试图通过使用 if 标记访问错误参数来向用户显示错误消息,但它不起作用,消息未显示。

<s:if test="error == 1">
<center>
<h4 style="color:red">Username or Password is invalid!!</h4>
</center>

我做错了什么?

最佳答案

就我而言,您做错的事情是完全忽略了框架。

粗略地说,在我看来,这应该看起来更像这样:

public class LoginAction extends ActionSupport {

private String username;
private String password;

@Override
public String validate() {
if (isBlank(username) || isBlank(password)) {
addActionError("Username or Password is invalid");
}

User user = loginUser(username, password);
if (user == null) {
addActionError("Invalid login");
}
}

public User loginUser(String username, String password) {
LoginModel loginModel = new LoginModel(username, password);

HttpBuilder<LoginModel, User> builder = new HttpBuilder<LoginModel, User>(User.class);
builder.setPath("service/user/authenticate");
builder.setModel(loginModel);

IHttpRequest<LoginModel, User> request = builder.buildHttpPost();
return request.execute(URL.BASE_LOCAL);
}

}

您将获得一个包含表单的“input”结果,并使用您想要的任何样式显示出现的任何操作错误。如果根据登录错误类型更改样式非常重要,那么您就必须多玩几场游戏,但这似乎有些过分了。

不相关,但我会将 loginUser 代码完全移出操作并移至实用程序/服务类中,但至少将其包装在单独的方法你可以更轻松地模拟它。它当然属于execute方法。

关于java - Struts2 如果标签不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793607/

26 4 0