如何在不使用Javascript的情况下为div id分配变量?

时间:2019-05-20 09:57:49

标签: html jsp

我正在尝试在jsp页面上的for循环内创建多个div。我正在从数据库中加载论坛中的所有帖子,每个帖子都是一个新的div。我正在尝试使ID为id= "post-" + title的div,其中title是一个变量。

我尝试过用这种方式放置out.printlnt(title)并没有工作,我还找到了一个解决方案,说像div id = {{title}}这样的东西仍然无法使用。您知道不使用JavaScript就能做到吗?我只想从for循环中分配ID。

for (ForumPost fp : allForumPosts) {
//get title and likes variables
<div id = "<%out.println(title);%>" >
<%out.println(title); out.println(likes);%>
<a>LIKE</a>
</div>
}

2 个答案:

答案 0 :(得分:1)

Java Server Pages (JSP)是用于前端的服务器端编程技术。

假设您已将对象从控制器传递到JSP,则可以使用JSTL

实现所需的for循环。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:forEach items="${allForumPosts}" var="post">
    <div id="post-${post.title}"></div>
</c:forEach>

如果您更喜欢 scriptlet (不推荐),请按照以下步骤操作

<% for (ForumPost post : allForumPosts) { %>
    <div id="post-<%=post.title%>"></div>
<% } %>

答案 1 :(得分:1)

如果您不介意使用jstl(脚本编写的首选方法),则可以通过以下方式进行操作:

def save(self, commit=True):
    if self.is_valid():
        # Get instance with self.instance & only update if a value's changed:
        for field_name in self.fields:
            if getattr(self.instance, field_name) != self.cleaned_data[field_name]:
                setattr(self.instance, field_name, self.cleaned_data[field_name])
                self.instance.save()
    return self.instance

只需确保将此标记包含在jsp的顶部:

<c:forEach var="post" items="${allForumPosts}">
    <div id="post-${post.title}">
        ${post.title}; ${post.likes} <a>LIKE</a>
    </div>
</c:forEach>

如果您想像现在一样使用scriptlet,我认为您应该执行以下操作:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

但是您真的应该考虑使用jstl而不是scriptlet