gpt4 book ai didi

jsp - 如何在JSP中执行验证并以相同的形式显示错误消息?

转载 作者:行者123 更新时间:2023-11-29 21:19:07 25 4
gpt4 key购买 nike

当用户提交错误的输入时,如何在同一个 JSP 中显示错误消息?我不打算抛出异常并显示错误页面。

最佳答案

最简单的方法是在 JSP 中为验证错误消息添加占位符。

JSP /WEB-INF/foo.jsp :

<form action="${pageContext.request.contextPath}/foo" method="post">
<label for="foo">Foo</label>
<input id="foo" name="foo" value="${fn:escapeXml(param.foo)}">
<span class="error">${messages.foo}</span>
<br />
<label for="bar">Bar</label>
<input id="bar" name="bar" value="${fn:escapeXml(param.bar)}">
<span class="error">${messages.bar}</span>
<br />
...
<input type="submit">
<span class="success">${messages.success}</span>
</form>

servlet您将表单提交到的位置,可以使用 Map<String, String>获取要在 JSP 中显示的消息。

Servlet @WebServlet("foo") :

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/foo.jsp").forward(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, String> messages = new HashMap<String, String>();
request.setAttribute("messages", messages); // Now it's available by ${messages}

String foo = request.getParameter("foo");
if (foo == null || foo.trim().isEmpty()) {
messages.put("foo", "Please enter foo");
} else if (!foo.matches("\\p{Alnum}+")) {
messages.put("foo", "Please enter alphanumeric characters only");
}

String bar = request.getParameter("bar");
if (bar == null || bar.trim().isEmpty()) {
messages.put("bar", "Please enter bar");
} else if (!bar.matches("\\d+")) {
messages.put("bar", "Please enter digits only");
}

// ...

if (messages.isEmpty()) {
messages.put("success", "Form successfully submitted!");
}

request.getRequestDispatcher("/WEB-INF/foo.jsp").forward(request, response);
}

如果您创建更多执行或多或少相同的 JSP 页面和 servlet,并开始注意到这毕竟是大量重复的样板代码,那么请考虑使用 MVC 框架。

另请参阅:

关于jsp - 如何在JSP中执行验证并以相同的形式显示错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35794557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com