账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    jstl 首次不进入 <c:forEach >
    35
    0
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%--
      Date: 11/28/18 : 10:55 AM
    --%>
    <%@ page import="cc.openhome.model.UserService" %>
    <%@ page import="java.text.DateFormat" %>
    <%@ page import="java.util.Locale" %>
    <%@ page import="java.util.List" %>
    <%@ page import="cc.openhome.model.Blah" %>
    <%
        /*String username = (String) request.getSession().getAttribute("login");
        Blah blah = new Blah();
        blah.setUsername(username);*/
    
    %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
        <title>微博</title>
        <link rel="stylesheet" href="css/member.css" type="text/css">
    </head>
    <body>
         <div class="leftPanel">
             <img src="img/mi.png" alt="微博" width="120" height="100"/>
             <br><br>
             <a href='logout.do?username="${sessionScope.login}"'>
                 注销${sessionScope.login}
             </a>
         </div>
         <form method="post" action="message.do">
             分享新鲜事...<br>
    
         <c:if test="${requestScope.blabla != null}">
              信息要在140 字以内
         </c:if>
    
        <%-- <%
             String blabla = (String) request.getAttribute("blabla");
             if(blabla != null){
         %>
                 信息要在140字以内<br>
         <%
             }
         %>--%>
    
             <textarea cols="60" rows="4" name="blabla">
                 ${ requestScope.blabla }</textarea><br>
             <button type="submit">送出</button>
         </form>
         <table style="text-align: left;width: 510px; height: 80px;"
                border="0" cellpadding="2" cellspacing="2">
             <thead>
                   <tr>
                       <th><hr></th>
                   </tr>
             </thead>
             <tbody>
        <%
            /*
            DateFormat dateFormat = DateFormat.getDateTimeInstance(
                    DateFormat.FULL,DateFormat.FULL,Locale.CHINA);
            */
    /*
    
            UserService userService = (UserService) application.getAttribute("userService");
            List<Blah> blahs = userService.getBlahs(blah);
    */
    
            //List<Blah> blahs = "${requestScope.blahs}";
    
        %>
        <c:forEach var="blah" items="${requestScope.blahs}">
           <tr>
               <td style="vertical-align: top">${blah.username}<br>
                   <c:out value="${blah.txt}"/><br>
                   <fmt:formatDate value="${blah.date}" type="both"
                      dateStyle="full" timeStyle="full"/>
                   <a href="delete.do?message=${blah.date.time}">删除</a>
                  <hr>
               </td>
           </tr>
        </c:forEach>
        </tbody>
     </table>
         <hr style="width: 100px; height: 1px">
    </body>
    </html>
    ![图片描述][1]

    只有等前端页面的提交按钮执行了以后,才会显示信息,
    <c:forEach var="blah" items="${requestScope.blahs}">在提交之后才出现的,预期是是先请求已存在的信息,显示在页面上,添加新的信息之后,提交刷新,出现所有信息,debug 后发现不进入<c:foreach> ,只有提交submit后才会显示

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 挪威的森林Y 普通会员 1楼

      在JSP中,<c:forEach>元素用于遍历集合或数组。如果第一次不进入<c:forEach>,那么该集合或数组可能已经被初始化了,或者在JSP中还没有被访问过。

      在Java中,如果在循环体中直接访问或修改集合或数组的元素,可能会导致NullPointerException。为了避免这种情况,可以在循环体外部检查集合或数组是否已经被初始化。

      在JSP中,你可以使用<c:if><c:otherwise>元素来判断集合或数组是否为空。如果为空,那么可以提前结束循环。

      以下是一个示例:

      ```jsp <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.HashSet" %>

      <% List list = new ArrayList(); HashSet set = new HashSet();

      // 在这里添加你的数据
      
      if(list.isEmpty() || set.isEmpty()){
          // 如果集合或数组为空,那么提前结束循环
          System.out.println("The collection or array is empty");
      } else {
          // 如果集合或数组不为空,那么继续遍历
          for(int i = 0; i < list.size(); i++){
              System.out.println(list.get(i));
          }
      }
      

      %> ```

      请注意,这只是一个示例,实际的代码可能需要根据你的具体需求进行修改。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部