单击按钮不会对jsp文件进行任何操作

时间:2018-08-15 16:03:14

标签: jsp

我从正在处理的书中获得了这段简单的代码,该书显示了带有“添加”按钮的简单表单,但是当我单击该按钮时什么也没有发生。这是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> 

这是表格的样子:

The form

非常感谢。

编辑:从那时起,我发现您需要显式禁用JSTL EL,而忽略该

<%@ page isELIgnored="false" %>

但是我仍然有问题。

2 个答案:

答案 0 :(得分:0)

我认为您需要提供表单操作=您的方法,在提交时,您应该这样做。

答案 1 :(得分:0)

主要问题是EL被禁用;我启用了它

<%@ page isELIgnored="false" %>