如何使用jquery(c:forEach)创建jstl标签?

时间:2019-01-27 20:46:59

标签: javascript jquery json ajax jsp

我正在尝试动态更新页面,为此,我需要在页面底部添加新对象,并且需要使它们看起来像其他对象。

因此,使用JSON和AJAX检索记录时,我并不想通过使用jQuery创建ac:forEach标记来显示它们,但似乎它无法识别我传递的值或无法创建该元素。 / p>

我遇到以下错误:

javax.el.PropertyNotFoundException: Property [user] not found on type [java.lang.String]

update.js

function onscrollUpdate(page) {
        $.getJSON('${pageContext.request.contextPath}/getarticles?page='
                + page, addElement);
}

function addElement(data) {
    console.log('adding elm');

    $(
            "<c:forEach var='article' items='" + data.articles + "' varStatus='status'>"
                    + "<jsp:directive.include file='/WEB-INF/templates/articleTemp.jsp' />
             </c:forEach>")
            .appendTo('#article');

    $('#page').text(data.page); 
}

$(document).ready(function() {
    setInterval(function() {
        var page = '${page }';
        onscrollUpdate(page);
    }, 5000);
});

articleTemp.jsp

<c:choose>
    <c:when
        test='${article.user.isSubscribed()}'>
        <a class="bold"
        href='${pageContext.request.contextPath}/u/${article.user.username}'><span
        class="silvername"> <c:out value="${article.user.name}"></c:out></span></a>
        </c:when>
        ...

featured.java

@RequestMapping(value = "/getarticles", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public Map<String, Object> getNumbers(@RequestParam(name = "page", required = false) String pagenum,
        Principal principal) {

    ...

    User user = new User();

    if (principal != null) {
       ...
    }

    List<Article> articles = ...;

    Map<String, Object> data = new HashMap<>();

    data.put("articles", articles);
    data.put("size", articles.size());
    data.put("page", page);

    return data;
}

最终目标是在用户滚动时动态更新页面,同时保留以前的设计和视觉效果,同时会导致500错误。

0 个答案:

没有答案