页面问题,关于JSTL

我的页面代表一个博客(一个红框表示的),遍历时有问题,当这个“博客”评论区没有内容时则,整条都不显示,
结构如图


jsp页面代码如下:

<table border="1" >
    <c:forEach var="blog" items="${blogsList }">
    	<tr><td>${blog.b_title}</td><td>${blog.b_blog }</td><td>by ${blog.simpleUser.sp_name }</td>
    	</tr>
    	<tr><td colspan="3">评论区</td></tr>
    	<tr>
    		<td colspan="3">
    		<form action="${pageContext.request.contextPath }/simpleUser/replyBlogAction.action" method="post">
    			<input type="text" name="m_message" placeholder="写出你的观点">
    			<input type="hidden" name="sp_id" value="${SessionsimpleUser.sp_id }">
    			<input type="hidden" name="b_id" value="${blog.b_id }">
    			<input type="submit" value="发表">
    		</form>
    		</td>
    	</tr>
   		<c:if test="${fn:length(blog.messagesList)>0}"> 
	    	 <c:forEach var="message" items="${blog.messagesList }">
		    	<tr>
		    		<td>${message.m_message }</td><td  colspan="2">by${ message.from_id}</td>
		    	</tr>
	    	</c:forEach>
    	</c:if>
    	<c:if test="${fn:length(blog.messagesList)<1}">
    		<tr><td colspan="3">暂无评论</td></tr>
    	</c:if> 
    </c:forEach>
    </table>

项目截图

你的复制出来的代码格式乱了,没法阅读。你先学一下怎么用markdown,再把逻辑描述清楚。我觉得你这个问题提不大 :wink:

你这 <c:forEach> 把整个 tr 都包裹了。你应该把前2个 tr都移出到 <c:forEach> 外面去。

tr移出来不就变成一行n列?我这个是两个循环,嵌套的一个循环整体,一个循环评论,我又新做了一个图

那个这个要两个循环啊。外循环遍历博客,内循环遍历博客的评论。

用c:choose,c:when,c:otherwise也没解决

 <table border="1" > 
    <c:forEach var="blog" items="${blogsList }">
    	<tr>
    		<td>${blog.b_title}</td><td>${blog.b_blog }</td>
    		<td>by ${blog.simpleUser.sp_name }</td>
    	</tr>
    	<tr>
    		<td colspan="3">评论区</td>
    	</tr>
    	<tr>
    		<td colspan="3">
    		<form action="${pageContext.request.contextPath }/simpleUser/replyBlogAction.action" method="post">
    			<input type="text" name="m_message" placeholder="写出你的观点">
    			<input type="hidden" name="sp_id" value="${SessionsimpleUser.sp_id }">
    			<input type="hidden" name="b_id" value="${blog.b_id }">
    			<input type="submit" value="发表">
    		</form>
    		</td>
    	</tr>
    	<c:choose>
	   		<c:when test="${fn:length(blog.messagesList)>0}"> 
		    	 <c:forEach var="message" items="${blog.messagesList }">
			    	<tr>
			    		<td colspan="2">${message.m_message }</td><td  >by${ message.from_id}</td>
			    	</tr>
		    	</c:forEach>
	    	</c:when>
	    	<c:otherwise >
	    		<tr><td colspan="3">暂无评论</td></tr>
	    	</c:otherwise> 
    	</c:choose>
    </c:forEach>
    </table>

我今天才恍然大悟,不是页面问题,是后台查询到数据映射的问题,这个帖子也不能编辑了,谢谢来看想帮助解决的伙计们

1 Like