Spring Web MVC High Bandwidth Issues in View Rendering

I am creating a project using the Spring Framework, and I am using the Spring MVC Framework to create my views.

Now everything works fine and runs smoothly, with the exception of this simple GET page, which takes 2 seconds, and sometimes more, to load on localhost.

As you can see in the logs (link), there is a very slow GenericConversionService trying to find converters for binding properties.

Help will be really appreciated!

Thanks in advance (pledges for my spelling mistakes) :)

UPDATE:

The conversion service is first started for each form tag with a binding to the Path attribute in the http://www.springframework.org/tags/form namespace . The more form tags I use, the slower the loading of my page. Should I use regular html form tags to improve performance, or is there a way to stop him from finding the "right" converter?

Additional Information:

Logs: Link (scroll about 1/3 there you will see a massive fragment of the GenericConversionService logs

Spring profiling information: Profile information

Controller Code (Sloppy):

@RequestMapping(value = "/route/create", method = RequestMethod.GET)
public ModelAndView getCreateRoute(){
    RouteCreateUpdateViewModel result = new RouteCreateUpdateViewModel();
    User u = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    u = us.get(u.getId());

    ModelAndView mav = new ModelAndView("route/create", "routeCreateUpdateModel", result);
    mav.addObject("favLocations", u.getLocations());
    mav.addObject("cars", u.getCars());

    result.setDateDay(Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + 1); // January = 0
    result.setDateMonth(Calendar.getInstance().get(Calendar.MONTH));
    result.setDateYear(Calendar.getInstance().get(Calendar.YEAR));

    mav.addObject("nextYear", result.getDateYear() + 1);

    return mav;
}

View code:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>


<!-- //TODO I18N -->

<style type="text/css">
    li:focus {
        background-color:green;
    }
</style>

<script>
    var highlightedElement = null;
    $(document).ready(function(){
        $("input,select").click(function() {
            if(highlightedElement != null)
            {
                $(highlightedElement).removeClass("curFocus");
                if(highlightedElement.hasClass("location"))
                {
                    checkLocation(highlightedElement);
                }
            }
            var newHighlightedElement = $(this).parent().parent();
            $(newHighlightedElement).addClass("curFocus");
            highlightedElement = newHighlightedElement;
        });
    });

    function checkLocation(highlightedElement)
    {
        var parameters = {
        zipcode: $(highlightedElement).find(".zipcode").val(),
        street: $(highlightedElement).find(".street").val(),
        streetNr: $(highlightedElement).find(".streetNr").val()
        };

        $.getJSON('/location/validate.php', parameters, function(data) {
            if(data.result != null)
            {
                $(highlightedElement).removeClass("badData");
                $(highlightedElement).addClass("goodData");
            }
            else {
                $(highlightedElement).removeClass("goodData")
                $(highlightedElement).addClass("badData");
            }
        });
    }

</script>

<div>
    <h1><fmt:message key="route.create.header"/></h1>
    <div class="form-container">
        <c:url value="/route/create.php" var="actUrl"/>
        <form:form method="POST" action="${actUrl}" modelAttribute="routeCreateUpdateModel">
            <ul>
                <li class="location">
                    <form:label path="fromZipcode" cssClass="title">Van<span class="required">*</span></form:label>
                <span>
                    <form:input path="fromZipcode" cssClass="zipcode"/>
                    <form:label path="fromZipcode" cssClass="desc">Gemeente</form:label>
                </span>
                <span>
                    <form:input path="fromStreet" cssClass="street"/>
                    <form:label path="fromStreet" cssClass="desc">Straat</form:label>
                </span>
                <span>
                    <form:input path="fromStreetNr" cssClass="streetNr"/>
                    <form:label path="fromStreetNr" cssClass="desc">Nr</form:label>
                </span>
                </li>
                <li class="location">
                    <form:label path="toZipcode" cssClass="title">Naar<span class="required">*</span></form:label>
                <span>
                    <form:input path="toZipcode" cssClass="zipcode"/>
                    <form:label path="toZipcode" cssClass="desc">Gemeente</form:label>
                </span>
                <span>
                    <form:input path="toStreet" cssClass="street"/>
                    <form:label path="toStreet" cssClass="desc">Straat</form:label>
                </span>
                <span>
                    <form:input path="toStreetNr" cssClass="streetNr"/>
                    <form:label path="toStreetNr" cssClass="desc">Nr</form:label>
                </span>
                </li>
                <li>
                    <form:label path="dateDay" cssClass="title">Datum<span class="required">*</span></form:label>
                <span>
                   <tags:showDayPicker path="dateDay" currentDay="${routeCreateUpdateModel.dateDay}"/>
                    <form:label path="dateDay" cssClass="desc">dd</form:label>
                </span>
                <span>
                   <tags:showMonthPicker path="dateMonth" currentMonth="${routeCreateUpdateModel.dateMonth}"/>
                    <form:label path="dateMonth" cssClass="desc">mm</form:label>
                </span>
                <span>
                   <tags:showYearPicker path="dateYear" startYear="${routeCreateUpdateModel.dateYear}"
                                        stopYear="${nextYear}"/>
                    <form:label path="dateYear" cssClass="desc">yyyy</form:label>
                </span>
                </li>
                <li>
                     <form:label path="days" cssClass="title">Dagen<span class="required">*</span></form:label>
                    <span>
                        <form:checkbox path="days" value="1"/>
                        <form:label path="days" cssClass="desc">Ma</form:label>
                    </span>
                    <span>
                        <form:checkbox path="days" value="2"/>
                        <form:label path="days" cssClass="desc">Di</form:label>
                    </span>
                    <span>
                        <form:checkbox path="days" value="3"/>
                        <form:label path="days" cssClass="desc">Wo</form:label>
                    </span>
                    <span>
                        <form:checkbox path="days" value="4"/>
                        <form:label path="days" cssClass="desc">Do</form:label>
                    </span>
                    <span>
                        <form:checkbox path="days" value="5"/>
                        <form:label path="days" cssClass="desc">Vrij</form:label>
                    </span>
                    <span>
                        <form:checkbox path="days" value="6"/>
                        <form:label path="days" cssClass="desc">Za</form:label>
                    </span>
                    <span>
                        <form:checkbox path="days" value="7"/>
                        <form:label path="days" cssClass="desc">Zo</form:label>
                    </span>
                </li>
                <li>
                    <form:label path="stopDateDay" cssClass="title">Herhalen tot<span class="required">*</span></form:label>
                <span>
                   <tags:showDayPicker path="stopDateDay" currentDay="${routeCreateUpdateModel.dateDay}"/>
                    <form:label path="stopDateDay" cssClass="desc">dd</form:label>
                </span>
                <span>
                   <tags:showMonthPicker path="stopDateMonth" currentMonth="${routeCreateUpdateModel.dateMonth}"/>
                    <form:label path="stopDateMonth" cssClass="desc">mm</form:label>
                </span>
                <span>
                   <tags:showYearPicker path="stopDateYear" startYear="${routeCreateUpdateModel.dateYear}"
                                        stopYear="${nextYear}"/>
                    <form:label path="stopDateYear" cssClass="desc">yyyy</form:label>
                </span>
                </li>
                <li>
                    <form:label path="departureTime" cssClass="title">Vertrek uur<span class="required">*</span></form:label>
                    <span>
                        <tags:showHourPicker path="departureTime"/>
                        <form:label path="departureTime" cssClass="desc">uu</form:label>
                    </span>
                    <span>
                        <tags:showMinutePicker path="departureTime"/>
                        <form:label path="departureTime" cssClass="desc">mm</form:label>
                    </span>
                </li>
                <li>
                    <form:label path="arrivalTime" cssClass="title">Aankomst uur<span class="required">*</span></form:label>
                    <span>
                        <tags:showHourPicker path="arrivalTime"/>
                        <form:label path="arrivalTime" cssClass="desc">uu</form:label>
                    </span>
                    <span>
                        <tags:showMinutePicker path="arrivalTime"/>
                        <form:label path="arrivalTime" cssClass="desc">mm</form:label>
                    </span>
                </li>
                <li>
                    <form:label path="car" cssClass="title">Auto</form:label>
                    <span>
                        <form:select path="car">
                            <form:options items="${cars}" itemLabel="carName" itemValue="Id" />
                        </form:select>
                    </span>
                </li>
            </ul>
            <input type="submit" value="Route toevoegen"/>
        </form:form>
    </div>
</div>

If you need more information, just ask, and I immediately provided it.

Thanks again:)

+3
source
2

, <form:option>.

, , HTML <option>, :

<form:select path="${path}">
    <c:forEach var="i" begin="0" end="59" step="${interval}">
      <option value="${i}"><fmt:formatNumber value="${i}" minIntegerDigits="2" /></option>
    </c:forEach>
</form:select>

<c:forEach> <fmt:formatNumber> <form:select> HTML.

+1

Spring MVC-... , Spring Framework ? .

, DEBUG org.springframework.core.convert , ?

,

+1

All Articles