<c:if> <c:forEach>标签在jsp里起不了作用了?

<c:forEach>标签代码:<c:forEach>结果:<c:if>代码:<c:if>结果:无论有没用户,都是这样不会变的!就这个异常了谁帮我解决我就给分谁... <c:forEach>标签代码:

<c:forEach>结果:

<c:if>代码:

<c:if>结果:无论有没用户,都是这样不会变的!
就这个异常了 谁帮我解决 我就给分谁
展开
 我来答
nighteagle82
推荐于2017-12-16 · TA获得超过100个赞
知道答主
回答量:41
采纳率:50%
帮助的人:25.2万
展开全部

FOREACH标签部分.

  1. 首先确认MAP中有没有取得数据.

  2. <c:forEach [var="varName"] items="" [varStatus="varStatusName"]

     FOREACH标签含义:  items存放被迭代的集合对象, var用来存放现在指到的成员。

  3. var元素输出的参数需要与MAP中存放的参数对应,(通常用一个JAVABEAN对像封装放在LIST等集合对像中).案例中的,NAME等值是否在JAVABEAN中存在.如果存在,EL表达式写法为: ${entry.name}即可直接输入,其他值也是一样.


IF标签部分.

  EL表达式有自己的判断方式,无法直接用==,!=,>=,<=直接判断.

  如果要判断封装对像是否为空.请用empty关键字....


以下是IF标签与FOREACH综合用法的示例:

<!-- 如果集合中不为空,输出数据! -->
<c:if test="${!empty adminlist}">
<c:forEach items="${adminlist}" var="list">
        <tr>
           <td>${list.id}</td>
           <td>${list.name}</td>
          <td>${list.pwd}</td>
        </tr>
  </c:forEach>
 </c:if>

<!-- 如果集合中为空,直接在HTML中输出提示! -->
 <c:if test="${empty adminlist}">
未能找到数据!
 </c:if>



为了能更好的显示出FOREACH的效果.通常先用choose标签进行判断,以下是JSP页面中的完整标签片段示例:(IF标签不再举例.)

<table cellpadding="5" cellspacing="1" border="0" width="100%" align="center">
    <tr align="center">
      <td>ID</td>
      <td>用户帐号</td>
      <td>用户密码</td>
      <td colspan="2">管理</td>
    </tr>
 <c:choose>
   <c:when test="${!empty userlist}">
<c:forEach items="${userlist}" var="list">
        <tr>
          <td>${list.id}</td>
          <td>${list.name}</td>
          <td>${list.pwd}</td>
          <td>
       <a href="UserEdit.jspx?action=update&id=${list.id}">编缉</a>
  </td>
          <td>
      <div onClick="return del();">
<a href="UserEdit.jspx?action=delete&id=${list.id}">删除</a>
              </div>
  </td>
        </tr>
  </c:forEach>
   </c:when>
  <c:otherwise>
      <tr>
          <td colspan="5">未能找到符合条件的数据!</td>
      </tr>
  </c:otherwise>   
</c:choose>
</table>
追问

你的讲解方式 非常好  真心忍不住 赞一个   if的问题 可以了    <forEach> (我问题的代码执行) 报错:

追答

仅从这图上来看</c:forEach>的结束标签哪去了?


在我看来,你依旧没有搞清楚如何用JSTL迭代输出集合对像中的数据集.

简单给你说明下整个流程,以及我的习惯性做法.


  1. 首先需要一个集合.这个集合可以是自己添加的LIST,ARRAYLIST,HASHMAP,HASHCODE,MAP等等.也可以是从数据库中查询取出的结果集.

  2. 结果集往往代表着一系列的数据,或者说是很多行的数据,而每一行数据中,又有很多列.例如ID,帐号,密码.等等...这一行数据中所有的字段通常做一个包装,可以用vector对像,或者arraylist等等UTIL中的这些集合来存放.但是通常我们在获取表单数据也好,封装对像也好,都会建立一个JAVABEAN,仅仅给它GET和SET方法.专门用来封装单个的数据.

  3. 这样一样,可以建立一个叫BookBean的JAVABEAN,它具有name,author,price,description这几个私有属性,并且给它生成GET和SET方法.

public class BookBean {

private String name;
private String author;
private float price;
private String description;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}

}
qllinhongyu
2014-02-10 · 超过24用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:56.7万
展开全部
首先,检查下你标签是否有导入正确。
其次,检查输出下你所取的值是否为空。
最后,以上两点检查都未出错,建议关闭重启下编辑器,然后多刷新几次(有时编辑器会抽风的)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Win8社区
2014-02-11 · TA获得超过412个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:141万
展开全部
你的写法有很多种可能性出问题,按照以下方式排错
第一:如果是<c:forEach>不可用,那么jsp页面访问的时候会报错
第二:<c:forEach>输出是空,证明你的map没有值
第三:如果你是第一次访问这个页面,那么你没有去访问action,当然map不会有值
第四:如果你是从aciton 里面返回的这个页面,那么你检测下action里面的map是否有get 方法
第五:如果是你servlet 那么你有没有把这个值存入到session ,session 名称为map
第六:<c:if> 里面的判断语句不要写==null 这样不规范,我的建议写法:<c:if test=“not empty suer”>
以上的分析如果你都对了,那么请在action或者你是servlet 中打印下你取得的数据,如果有数据,那么错误就在返回和页面上了,如果没有那么源头就出错了
如果你还有什么不明白的,请继续追问
追问
我补充了问题   应该不会是map的值为空吧? 你再帮我看看谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-10
展开全部
<c:if test="user==nulll">

是不是打错单词了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式