在表单上按提交按钮进入同一页面

时间:2020-06-19 16:36:39

标签: html spring jsp spring-webflow flow

我正在处理带有文本字段的表单,并且正在尝试提交表单。但是,按下提交后,它会直接返回表单。我已经在flow.xml文件中指出要对其进行验证,如果成功,则请转到主页,但是显然这没有发生。尚无验证逻辑,无论如何它都成功。我也没有在控制台中看到任何异常,因此我怀疑这是html问题,但我可能错了。我正在使用Spring Web Flow和JSP。

代码如下所示:

applicationForm.jsp:

<form method="post" action="${flowExecutionUrl}"
    enctype="multipart/form-data" class="form">

    <input type="hidden" name="_eventId" value="submitResource">
    <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}" />

    <div class="card-body">
        <div class="container">

            <c:if test="${not empty document.getErr('formerr')}">
                <div class="alert alert-danger alert-dismissible fade show">
                    <strong>Error!</strong> ${document.getErr('formerr')}
                    <button type="button" class="close" data-dismiss="alert">&times;</button>
                </div>
            </c:if>

            <div class="d-flex mb-5 justify-content-center">
                <div class="btn-group m-4" data-toggle="buttons">
                    <button id="option1" type="button" class="btn btn-outline-primary">foobar1</button>
                    <button id="option2" type="button" class="btn btn-outline-primary">foobar2</button>
                    <button id="option3" type="button" class="btn btn-outline-primary">foobar3</button>
                </div>
            </div>

            <%@include file="forms/application.jsp"%>
            <%@include file="forms/clientowner.jsp"%>

            <div class="row mt-4 justify-content-center">
                <div class="col-2 m-4">
                    <button type="button" class="btn btn-secondary btn-block"
                        data-toggle="modal" data-target="#approveModal"
                        onclick="unbindLeaveAlert()">Save</button>
                    <div class="modal fade" id="approveModal" tabindex="-1" role="dialog"
                        aria-labelledby="exampleModalLabel" aria-hidden="true">
                        <div class="modal-dialog" role="document">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <h5 class="modal-title" id="exampleModalLabel">Are you sure
                                        you want to save this submission as a draft?</h5>
                                    <button class="close" type="button" data-dismiss="modal"
                                        aria-label="Close">
                                        <span aria-hidden="true">x</span>
                                    </button>
                                </div>
                                <div class="modal-body">Select "Save" to save as draft</div>
                                <div class="modal-footer">
                                    <button class="btn btn-secondary" type="button"
                                        data-dismiss="modal">Cancel</button>
                                    <button type="submit" class="btn btn-danger" name="submitType"
                                        value="draft">Save</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="col-2 m-4">
                    <button type="button" class="btn btn-success btn-block"
                        data-toggle="modal" data-target="#returnModal"
                        onclick="unbindLeaveAlert()">Submit</button>
                    <div class="modal fade" id="returnModal" tabindex="-1" role="dialog"
                        aria-labelledby="exampleModalLabel" aria-hidden="true">
                        <div class="modal-dialog" role="document">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <h5 class="modal-title" id="exampleModalLabel">Are you sure
                                        you want to submit this form?</h5>
                                    <button class="close" type="button" data-dismiss="modal"
                                        aria-label="Close">
                                        <span aria-hidden="true">x</span>
                                    </button>
                                </div>
                                <div class="modal-body">Select "Submit" to submit this
                                    submission</div>
                                <div class="modal-footer">
                                    <button class="btn btn-secondary" type="button"
                                        data-dismiss="modal">Cancel</button>
                                    <button type="submit" class="btn btn-danger" name="btnSubmit"
                                        value="document">Submit</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="col-2 m-4">
                    <button type="button" class="btn btn-danger btn-block"
                        data-toggle="modal" data-target="#cancelModal"
                        onclick="unbindLeaveAlert()">Cancel</button>
                    <div class="modal fade" id="cancelModal" tabindex="-1" role="dialog"
                        aria-labelledby="exampleModalLabel" aria-hidden="true">
                        <div class="modal-dialog" role="document">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <h5 class="modal-title" id="exampleModalLabel">Are you sure
                                        you want to cancel this form?</h5>
                                    <button class="close" type="button" data-dismiss="modal"
                                        aria-label="Close">
                                        <span aria-hidden="true">x</span>
                                    </button>
                                </div>
                                <div class="modal-body">Select "Yes" to cancel this
                                    submission</div>
                                <div class="modal-footer">
                                    <button class="btn btn-secondary px-4" type="button"
                                        data-dismiss="modal">No</button>
                                    <button type="submit" class="btn btn-danger px-4"
                                        name="submitType" value="document">Yes</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

            </div>
        </div>
    </div>
</form>

application.jsp

<div class="row foobar-form">
    <div class="col-4 pl-5 ml-5">
        <div class="form-group">
            <label for="foobar-id" class="col-form-label">Foobar ID</label>
        </div>
        <div class="form-group">
            <label for="foodot-id" class="col-form-label">Foodot ID</label>
        </div>
    </div>
    <div class="col">
        <div class="form-group">
            <div class="col-6">
                <input type="text" class="form-control" id="foobar-id"
                    placeholder="Enter Foobar ID..." data-toggle="tooltip"
                    title="Add information about Foobar ID here.">
            </div>
        </div>
        <div class="form-group">
            <div class="col-8">
                <input type="text" class="form-control" id="foodot-id"
                    placeholder="Enter Foodot ID..." data-toggle="tooltip"
                    title="Add information about Foodot ID here.">
            </div>
        </div>
    </div>
</div>

flow.xml:

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/webflow
http://www.springframework.org/schema/webflow/spring-webflow.xsd">

    <var name="loginBean" class="com.jcg.examples.bean.LoginBean" />
    <var name="applicationResource" class="com.jcg.examples.bean.ApplicationResource" />

    <view-state id="displayLoginView" view="jsp/login.jsp"
        model="loginBean">
        <transition on="performLogin" to="performLoginAction" />
    </view-state>

    <action-state id="performLoginAction">
        <evaluate expression="loginService.validateUser(loginBean)" />

        <transition on="true" to="displaySuccess" />
        <transition on="false" to="displayError" />

    </action-state>

    <view-state id="displaySuccess" view="jsp/homePage.jsp"
        model="loginBean">
    </view-state>

    <view-state id="addItem" view="jsp/applicationForm.jsp"
        model="applicationResource">
        <transition on="submitResource" to="validateResource"/>
    </view-state>

    <action-state id="validateResource">
        <evaluate expression="FormValidator.validate(applicationResource)" />
        <transition on="success" to="uploadResource" />
        <transition on="error" to="displayLoginView" />
    </action-state>

    <action-state id="uploadResource">
        <evaluate expression="FormUploader.upload(applicationResource)" />
        <transition on="success" to="displaySuccess" />
        <transition on="error" to="errorPage" />
    </action-state>

    <view-state id="displayError" view="jsp/failure.jsp" />

    <global-transitions>
        <transition on="displaySuccess" to="displaySuccess" />
        <transition on="addItem" to="addItem" />
    </global-transitions>
</flow>

1 个答案:

答案 0 :(得分:0)

因此,我不得不从表单标签中删除enctype="multipart/form-data",它可以正常工作。如果有人可以弄清为什么这很重要,那么这很好。