Hy我在他的领域有一个带有简历形式的jsp:

<form:form commandName="cv" action="${pageContext.request.contextPath}/site/my-account/cv/save" id="cv-template-form" method="POST">
<h3><spring:message code="view.candidates.form.workExperience" /></h3>
    <div id="workExperienceDiv">
        <jsp:include page="/WEB-INF/views/site/commons/cv/workExperience.jsp"/>
    </div>
    <a href="javascript:void(0);" onclick="AjaxUtils.submitAttribute('${pageContext.request.contextPath}/site/my-account/cv/save/workExperience','workExperienceDiv');" class="btn btn-large btn-block btn-lightgray">
        <spring:message code="button.labe.add.more"/>
    </a>
<h3><spring:message code="view.candidates.form.education" /></h3>
    <div id="educationDiv">
        <jsp:include page="/WEB-INF/views/site/commons/cv/education.jsp"/>
    </div>
    <a href="javascript:void(0);" onclick="AjaxUtils.submitAttribute('${pageContext.request.contextPath}/site/my-account/cv/save/education','educationDiv');" class="btn btn-large btn-block btn-lightgray">
        <spring:message code="button.labe.add.more"/>
    </a>


工作经验jsp:

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

    <c:forEach var="workExperience" items="${cv.workExperiences}" >
        <div class="row">
            <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.employer" /></label>
            <div class="col-md-8">
                <input value="${workExperience.employer}" id="employer" class="text block"/>
            </div>
        </div>

        <div class="row">
            <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.period" /></label>
            <div class="col-md-4">
                <div class="datepicker">
                    <i class="fa fa-calendar"></i>
                    <input value="${workExperience.dateFrom}" class="text block date"/>
                </div>
            </div>
            <div class="col-md-4">
                <div class="datepicker">
                    <i class="fa fa-calendar"></i>
                    <input value="${workExperience.dateTo}" class="text date block"/>
                </div>
            </div>
        </div>

        <div class="row">
            <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.position" /></label>
            <div class="col-md-8">
                <input value="${workExperience.position}" id="position" type="text" class="text block"/>
            </div>
        </div>

        <div class="row">
            <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.activities" /></label>
            <div class="col-md-8">
                <textarea class="textarea block">${workExperience.position}</textarea>
            </div>
        </div>

        <div class="row">
            <a class="editor_remove" href="#" onclick="AjaxUtils.submitAttribute('${pageContext.request.contextPath}/site/my-account/cv/delete/workExperience/${workExperience.tempId}');">
                <i class="fa fa-times"></i>Remove
            </a>
        </div>
    </c:forEach>

    <div class="row">
        <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.employer" /></label>
        <div class="col-md-8">
            <form:errors id="employerError" path="workExperience.employer" cssClass="error"/>
            <form:input path="workExperience.employer" id="employer" class="text block" cssErrorClass="text block error"/>
        </div>
    </div>

    <div class="row">
        <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.period"/></label>
        <div class="col-md-4">
        <form:errors path="workExperience.dateFrom" cssClass="error"/>
            <div class="datepicker">
                <i class="fa fa-calendar"></i>
                <form:input path="workExperience.dateFrom" cssClass="text block date" cssErrorClass="text block date error" placeholder="From"/>
            </div>
        </div>
        <div class="col-md-4">
            <div class="datepicker">
                <form:errors path="workExperience.dateTo" cssClass="error"/>
                <i class="fa fa-calendar"></i>
                <form:input path="workExperience.dateTo" cssClass="text date block" cssErrorClass="text date block error" placeholder="To"/>
            </div>
        </div>
    </div>

    <div class="row">
        <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.position" /></label>
        <div class="col-md-8">
            <form:errors path="workExperience.position" cssClass="error"/>
            <form:input path="workExperience.position" id="position" type="text" class="text block" cssErrorClass="text block error"/>
        </div>
    </div>

    <div class="row">
        <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.activities" /></label>
        <div class="col-md-8">
            <form:errors path="workExperience.activities" cssClass="error"/>
            <form:textarea path="workExperience.activities" cssClass="textarea block" cssErrorClass="textarea block error"/>
        </div>
    </div>


Ajax函数:

submitAttribute: function (url1,div){
        $.ajax({
            type: "POST",
            url: url1,
            data: $('#cv-template-form').serialize(),
            cache: false,
            success: function(data) {
                $('#'+div).html(data);
                Utils.Pikaday.init("input.date");
            }
        });
    },


教育看起来像workExperience jsp。从理论上讲,我想填充workExperience字段,并用ajax发送给它,并将其放在workExperienceList中,然后将列表和新的workExperience发送回去。问题在于ajax回调给我一个错误原因,因为他不认识workExperience.jsp中的workExperience。
这是错误:

 SEVERE: Servlet.service() for servlet [spring-mvc-dispatcher] in context with path [/] threw exception [Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/views/site/commons/cv/workExperience.jsp'.] with root cause
    java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'workExperience' available as request attribute


如果我在workExperience.jsp中输入一个带有commandName =“ cv”的新表格,它可以正常工作,但是如果我对该表格进行教育,那么他第一次不认识,则在Java中为空。我不想将commandName =“ workExperience”放在workExperience.jsp中,因为如果我要保存大型简历,那么他将不会在work对象中放入workExperience.jsp字段。有什么办法吗?

最佳答案

我解决了这个问题,它不是很好,但是它工作正常,我添加了一个c:如果它是第一次使用大表单加载的,那么如果没有从Java返回的jsp页面,则显示不带workExperience表单,然后以workExperience表单显示。仅当从Java返回workExperience jsp页面时,变量ajax才为true。现在这是我的工作经验表格:

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:set var="index" value="0"/>
<c:if test="${ajax == true}">

    <form:form commandName="cv">
        <c:forEach var="workExperience" items="${cv.workExperiences}" >
            <div class="row">
                <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.employer" /></label>
                <div class="col-md-8">
                    <form:errors id="employerError" path="workExperiences[${index}].employer" cssClass="error"/>
                    <form:input path="workExperiences[${index}].employer" id="employer" class="text block" cssErrorClass="text block error"/>
                </div>
            </div>

            <div class="row">
                <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.period"/></label>
                <div class="col-md-4">
                <form:errors path="workExperiences[${index}].dateFrom" cssClass="error"/>
                    <div class="datepicker">
                        <i class="fa fa-calendar"></i>
                        <form:input path="workExperiences[${index}].dateFrom" cssClass="text block date" cssErrorClass="text block date error" placeholder="From"/>
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="datepicker">
                        <form:errors path="workExperiences[${index}].dateTo" cssClass="error"/>
                        <i class="fa fa-calendar"></i>
                        <form:input path="workExperiences[${index}].dateTo" cssClass="text date block" cssErrorClass="text date block error" placeholder="To"/>
                    </div>
                </div>
            </div>

            <div class="row">
                <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.position" /></label>
                <div class="col-md-8">
                    <form:errors path="workExperiences[${index}].position" cssClass="error"/>
                    <form:input path="workExperiences[${index}].position" id="position" type="text" class="text block" cssErrorClass="text block error"/>
                </div>
            </div>

            <div class="row">
                <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.activities" /></label>
                <div class="col-md-8">
                    <form:errors path="workExperiences[${index}].activities" cssClass="error"/>
                    <form:textarea path="workExperiences[${index}].activities" cssClass="textarea block" cssErrorClass="textarea block error"/>
                </div>
            </div>

            <c:if test="${index < cv.workExperiences.size()-1 || cv.workExperiences[index].id != null}">
                <a class="editor_remove" href="javascript:void(0);" onclick="AjaxUtils.submitAttribute('${pageContext.request.contextPath}/site/my-account/cv/delete/workExperience/${index}','workExperienceDiv');">
                    <i class="fa fa-times"></i><spring:message code="button.label.remove"/>
                </a>
            </c:if>
            <c:set var="index" value="${index+1}"/>
        </c:forEach>
    </form:form>
</c:if>

<c:if test="${ajax != true}">

    <c:forEach var="workExperience" items="${cv.workExperiences}" >
        <div class="row">
            <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.employer" /></label>
            <div class="col-md-8">
                <form:errors id="employerError" path="workExperiences[${index}].employer" cssClass="error"/>
                <form:input path="workExperiences[${index}].employer" id="employer" class="text block" cssErrorClass="text block error"/>
            </div>
        </div>

        <div class="row">
            <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.period"/></label>
            <div class="col-md-4">
            <form:errors path="workExperiences[${index}].dateFrom" cssClass="error"/>
                <div class="datepicker">
                    <i class="fa fa-calendar"></i>
                    <form:input path="workExperiences[${index}].dateFrom" cssClass="text block date" cssErrorClass="text block date error" placeholder="From"/>
                </div>
            </div>
            <div class="col-md-4">
                <div class="datepicker">
                    <form:errors path="workExperiences[${index}].dateTo" cssClass="error"/>
                    <i class="fa fa-calendar"></i>
                    <form:input path="workExperiences[${index}].dateTo" cssClass="text date block" cssErrorClass="text date block error" placeholder="To"/>
                </div>
            </div>
        </div>

        <div class="row">
            <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.position" /></label>
            <div class="col-md-8">
                <form:errors path="workExperiences[${index}].position" cssClass="error"/>
                <form:input path="workExperiences[${index}].position" id="position" type="text" class="text block" cssErrorClass="text block error"/>
            </div>
        </div>

        <div class="row">
            <label class="col-md-4"><spring:message code="view.candidates.form.workExperience.activities" /></label>
            <div class="col-md-8">
                <form:errors path="workExperiences[${index}].activities" cssClass="error"/>
                <form:textarea path="workExperiences[${index}].activities" cssClass="textarea block" cssErrorClass="textarea block error"/>
            </div>
        </div>

        <c:if test="${index < cv.workExperiences.size()-1 || cv.workExperiences[index].id != null}">
            <a class="editor_remove" href="javascript:void(0);" onclick="AjaxUtils.submitAttribute('${pageContext.request.contextPath}/site/my-account/cv/delete/workExperience/${index}','workExperienceDiv');">
                <i class="fa fa-times"></i><spring:message code="button.label.remove"/>
            </a>
        </c:if>
        <c:set var="index" value="${index+1}"/>
    </c:forEach>
</c:if>

10-01 22:53