我在 Servlet/JSP 方面遇到问题。我正在尝试验证 Java Servlet 类中 JSP 的 HTML 字段,并将该(可能的)错误消息从 Servlet 返回到 JSP。即使我遵循教程,我也无法解决这个问题。
index.jsp:
<form action="addWine" method="post">
<p>
<input type="text" name="name"/>
<input type="submit" value="submit">
<span class="error">${messages.error}</span>
</p>
</form>
添加Wines.java
public class AddingWines extends HttpServlet {
...
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, String> messages = new HashMap<String, String>();
request.setAttribute("messages", messages);
String name = request.getParameter("name");
if(name.trim().isEmpty()){
messages.put("name", "give a name");
}
//No errors in HTML field
if (messages.isEmpty()) {
messages.put("noErrors", String.format("Welcome blabla"));
}
request.getRequestDispatcher("greatSucceess.jsp").forward(request, response);
web.xml
<servlet>
<servlet-name>AddingWines</servlet-name>
<servlet-class>Servlets.AddingWines</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddingWines</servlet-name>
<url-pattern>/addWine</url-pattern>
</servlet-mapping>
NetBeans 没有抛出任何错误。即使 HTML 字段为空,它也只是定向到greatSuccesss.jsp。该怎么办? (顺便说一句,有足够的信息吗?)
最佳答案
在您的 servlet 中,您将每个请求重定向到greatSuccess.jsp,请参阅最后一行:
request.getRequestDispatcher("greatSucceess.jsp").forward(request, response);
您应该按如下方式更改代码:
if (messages.isEmpty()) {
request.getRequestDispatcher("greatSucceess.jsp").forward(request, response);
} else {
// show page with form
}
关于java - 无法从 Servlet 到 JSP 获取错误消息(验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660609/