我从正在处理的书中获得了这段简单的代码,该书显示了带有“添加”按钮的简单表单,但是当我单击该按钮时什么也没有发生。这是jsp:
<%@page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- https://stackoverflow.com/questions/22708241/unknown-tag-cforeach-in-eclipse -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Add Course</title>
</head>
<body>
<c:set var="errMsg" value="${null}"/>
<c:set var="displayForm" value="${true}"/>
<c:if test="${\"POST\".equalsIgnoreCase(pageContext.request.method)
&& pageContext.request.getParameter(\"submit\") != null}">
<jsp:useBean id="courseBean" class="packt.book.jee.eclipse.ch4.bean.Course">
<c:catch var="beanStorageException">
<jsp:setProperty name="courseBean" property="*" />
</c:catch>
</jsp:useBean>
<c:choose>
<c:when test="${!courseBean.isValidCourse() || beanStorageException != null}">
<c:set var="errMsg" value="Invalid course details. Please try again"/>
</c:when>
<c:otherwise>
<c:catch var="addCourseException">
${courseBean.addCourse()}
</c:catch>
<c:choose>
<c:when test="${addCourseException != null}">
<c:set var="errMsg" value="${addCourseException.message}"/>
</c:when>
<c:otherwise>
<c:redirect url="listCourse.jsp"/>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</c:if>
<jsp:useBean id="teacherBean" class="packt.book.jee.eclipse.ch4.bean.Teacher"/>
<c:catch var="teacherBeanErr">
<c:set var="teachers" value="${teacherBean.getTeachers()}"/>
</c:catch>
<c:if test="${teacherBeanErr != null}">
<c:set var="errMsg" value="${err.message}"/>
</c:if>
<h2>Add Course:</h2>
<c:if test="${errMsg != null}">
<span style="color: red;">
<c:out value="${errMsg}"></c:out>
</span>
</c:if>
<form method="post">
Name: <input type="text" name="name"> <br>
Credits : <input type="text" name="credits"> <br>
Teacher : <select name="teacherId">
<c:forEach items="${teachers}" var="teacher">
<option value="${teacher.id}">${teacher.firstName}</option>
</c:forEach>
</select>
<br>
<button type="submit" name="submit">Add</button>
</form>
</body>
</html>
问题是,当我单击“添加”按钮时,什么也没发生。本书的代码有问题吗?众所周知,这方面的书不好。似乎有很多方法可以提交表单数据。这里使用了一个按钮,但是没有“ action”属性;那页面是提交给自己的吗?如果是这样,为什么它不起作用?
<form method="post">
Name: <input type="text" name="name"> <br>
Credits : <input type="text" name="credits"> <br>
Teacher : <select name="teacherId">
<c:forEach items="${teachers}" var="teacher">
<option value="${teacher.id}">${teacher.firstName}</option>
</c:forEach>
</select>
<br>
<button type="submit" name="submit">Add</button>
</form>
这是表格的样子:
非常感谢。
编辑:从那时起,我发现您需要显式禁用JSTL EL,而忽略该
<%@ page isELIgnored="false" %>
但是我仍然有问题。
答案 0 :(得分:0)
我认为您需要提供表单操作=您的方法,在提交时,您应该这样做。
答案 1 :(得分:0)
主要问题是EL被禁用;我启用了它
<%@ page isELIgnored="false" %>