【问题标题】:Button click doesn't result in any action in jsp file按钮单击不会导致 jsp 文件中的任何操作
【发布时间】:2018-08-15 16:03:14
【问题描述】:

我正在阅读一本书中的这个简单代码,它显示了一个带有添加按钮的简单表单,但是当我单击该按钮时没有任何反应。这是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" %>

但是,我仍然遇到问题。

【问题讨论】:

    标签: jsp


    【解决方案1】:

    我相信您需要提供表单操作 =yourmethod,提交时应该执行您的逻辑。

    【讨论】:

    • 谢谢;是别的东西。
    【解决方案2】:

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

    <%@ page isELIgnored="false" %>
    

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      相关资源
      最近更新 更多