我试图在用户已经登录并且用户错误地输入用户名/密码时在我的应用程序中显示不同的错误。我尝试了很多方法,但都没有工作。我不知道还有什么可以尝试的,或者甚至有可能。我不知道我是否接近解决方案。 我想要做的是:在使用Ajax的JSP中显示特定错误
- 在请求中设置errorMessage;
- 在响应中设置SC_INTERNAL_SERVER_ERROR,以便AJAX函数进入**,并且参数中的HTML是具有特定消息的JSP中的HTML。
行动
public class LogUser extends Action {
@Override
public void execute() throws Exception {
...
String pageToGo = this.tryLogUser(username, password);
request.getRequestDispatcher(pageToGo).forward(request, response);
}
private String tryLogUser(String username, String password) throws Exception {
String pageToGo = "page/userHome";
...
if(canLog) {
...
try {
...
Server.getInstance().logIn(user); // Throws an Exception if the User is already logged in.
...
} catch (ServerException e) {
this.setErrorMessage("That user is already logged in.");
pageToGo = "page/error.jsp";
}
} else {
this.setErrorMessage("User and/or Password are incorrect.");
pageToGo = "page/error.jsp";
}
return pageToGo;
}
private void setErrorMessage(String message) {
request.setAttribute("errorMessage", message);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
}
JSP
<div class="alert alert-danger"> ${ requestScope.errorMessage } </div>
AJAX
function showUserHome() {
$.post("${ sessionScope.ServletUrl }", $("form#logForm").serialize())
.done(function(html) {
$("div#toolbar").load("page/userToolbar.jsp");
$("div#content").html(html);
})
.fail(function(html) {
$("#result").html(html);
});
}
编辑:
虽然试图从浏览器调试它,它就会在$。员额和步骤之后,就跳转到函数结束,跳过.done和.fail和页面保持不变。我在RAD控制台或浏览器控制台中没有收到任何错误,除了在Action上设置的SC_INTERNAL_SERVER_ERROR。
'不working'不正确的问题描述尤其是当你有2个独立的环境中一起交流。需要更具体的 – charlietfl 2014-12-05 14:33:51
增加了对问题的描述。这是更好还是我应该添加别的东西? – 2014-12-05 14:46:56
从编辑它听起来像你不阻止浏览器默认表单提交和页面正在重新加载 – charlietfl 2014-12-05 14:51:19