如何使用 JSTL 在 jsp 页面中迭代 ArrayList>

2023-12-15

我正在尝试使用 JSTL 显示数据库中的值,因为它不可重复使用,所以有标签,我一直在根据我之前的问题使用另一个场景,实现 的其他策略,我开始使用 servlet 转到表的视图页面,我无法像该链接中那样使用一维数组,因此我使用了 ArrayList>。

下面给出了我从数据库中获取值的代码。

public ArrayList getAllStockDetails() {
    System.out.println("Function");
    HashMap<String, String> stkMap = new HashMap<String, String>();
    ArrayList<HashMap<String, String>> stkList= new ArrayList<>();
    try {
        Dbconnection dcon = new Dbconnection();
        dcon.connect();
        String query = "Select * from tbstk";
        Statement stmt = dcon.con.createStatement();
        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            //System.out.println(rs.getString("SCat_id") + rs.getString("SCat_des"));
            stkMap.put("idStk", rs.getString("Stk_prdid"));
            stkMap.put("prdStk", rs.getString("Stk_prdid"));
            stkMap.put("lvlStk", rs.getString("Stk_lvlid"));
            stkMap.put("inStk", rs.getString("Stk_instk"));
            stkMap.put("thldStk", rs.getString("Stk_thld"));
            stkMap.put("expStk", rs.getString("Stk_prdid"));
            stkList.add(stkMap);
        }
        return stkList;
    } catch (SQLException ex) {
        Logger.getLogger(Op_Stock.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}

我的Servlet代码如下

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String userPath = request.getServletPath();
    switch (userPath) {
        case "/ViewStock":
            Op_Stock ops= new Op_Stock();
            ArrayList<HashMap<String, String>> stkList= new ArrayList<>();
            stkList=ops.getAllStockDetails();
            request.setAttribute("stkList", stkList);
            userPath = "/Stock";
            break;
        //Other cases
    }
    String url = "/WEB-INF/view" + userPath + ".jsp";
    **request.getRequestDispatcher(url).forward(request, response);**//<--Error Here
}

我的页面中的代码如下

 <table class="table table-bordered table-striped table-hover">
                        <thead>
                        <th><strong>Product Name</strong></th>
                        <th><strong>Level</strong></th>
                        <th><strong>In Stock</strong></th>
                        <th><strong>Threshold</strong></th>
                        <th><strong>Expiry</strong></th>
                        <th><strong>Operations</strong></th>
                        </thead>
                        <jsp:useBean id="gen" scope="request" class="Common.General"/>
                        <jsp:useBean id="prd" scope="request" class="Product.Product"/>
                        <tbody>
                            <c:forEach var="row" items="${stkList.rows}"> 
                                <tr>
                                    <td><c:out value="${row.prdStk}"/></td>
                                    <td><c:out value="${row.lvlStk}"/></td>
                                    <td><c:out value="${row.inStk}"/></td>
                                    <td><c:out value="${row.thldStk}"/></td>
                                    <td><c:out value="${row.expStk}"/></td>
                                    <td>
                                        <button type="button" class="btn btn-default btn-sm btn-danger" onclick="deletedata('${row.idStk}');">
                                            <span class="glyphicon glyphicon-trash"></span>
                                        </button>
                                        <button type="button" class="btn btn-default btn-sm btn-primary" onclick="editdata('${row.idStk}')">
                                            <span class="glyphicon glyphicon-edit"></span>
                                        </button>
                                        <button class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal">
                                            <span class="glyphicon glyphicon-eye-open"></span>
                                        </button>                                    
                                    </td>
                                </tr>
                            </c:forEach>
                        </tbody>
                        <tfoot>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        </tfoot>
 </table>

我的页面加载时仅返回空白页面,我在这方面做错了什么,如果我所做的代码有误,请纠正我。

我的日志中的错误如下

Stacktrace:] with root cause
 java.lang.NumberFormatException: For input string: "rows"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at javax.el.ListELResolver.coerce(ListELResolver.java:157)
at javax.el.ListELResolver.getValue(ListELResolver.java:70)
at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)
at org.apache.el.parser.AstValue.getValue(AstValue.java:167)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:115)
at org.apache.jsp.WEB_002dINF.view.Stock_jsp._jspx_meth_c_005fforEach_005f0(Stock_jsp.java:344)
at org.apache.jsp.WEB_002dINF.view.Stock_jsp._jspService(Stock_jsp.java:191)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
at Stock.Con_Stock.processRequest(Con_Stock.java:58)
at Stock.Con_Stock.doGet(Con_Stock.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2381)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2370)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

有几件事你必须改变:

ResultSet 默认情况下仅向前,因为您的访问列Stk_prdid多次,它不返回任何值。

public ArrayList getAllStockDetails() {
    ...
    Statement stmt = dcon.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    ....
    while (rs.next()) {
        HashMap<String, String> stkMap = new HashMap<String, String>();//<-- move here
        stkList.add(stkMap);
        ...
    }
    ....
}

In jsp:

...
<c:forEach var="row" items="${stkList}">
    ...
    <td>${row.prdStk}</td>
    ...
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JSTL 在 jsp 页面中迭代 ArrayList> 的相关文章

  • 使用正则表达式验证输入字符串是否为 0-255 之间的数字

    我在将输入字符串与正则表达式匹配时遇到问题 我想验证输入数字在 0 255 之间并且长度最多应为 3 个字符 代码工作正常 但当我输入 000000 至任意长度时 显示 true 而不是 false 这是我的代码 String IP 000
  • 帮助我避免 JPA、Hibernate 和 MySQL 的连接超时

    我正在使用 JPA Hibernate 作为提供者 Glassfish 和 MySQL 开发中一切都运行良好 但是当我将应用程序部署到测试服务器并让它运行 大部分空闲 过夜时 我通常会在早上遇到这样的情况 2011 03 09T15 06
  • jpa2 CriteriaBuilder order by “ORDER BY 表达式必须出现在选择列表中”

    我正在写一个查询标准生成器 但无法添加order by子句 因为它随消息一起抛出错误ORDER BY 表达式必须出现在选择列表中这是我的实体 public class A Integer aId ManyToOne JoinColumn n
  • ResultSet:通过索引检索列值与通过标签检索

    使用 JDBC 时 我经常遇到这样的结构 ResultSet rs ps executeQuery while rs next int id rs getInt 1 Some other actions 我问自己 以及代码作者 为什么不使用
  • 我需要一个字数统计程序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要弄清
  • 按文件名过滤 eclipse 中的警告

    我们使用 Eclipse 进行 Java 开发 并使用 Maven 将 JSP 编译成 servlet 以便在嵌入式 Jetty 实例中使用 这意味着要从 Eclipse 运行该项目 我必须包含 target jsp source 作为源文
  • 在java中将DataURL图像转换为图像文件

    我在我的 java servlet 中接收图像 DataURL 它看起来像 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAA 我需要将其另存为图像文件 我该怎么做 The simplest w
  • SwingWorker 在另一个 SwingWorker 的 did 方法中

    首先 我需要通知您 我正在尽最大努力学习如何用 Java 编写代码 虽然有点困难 但我相信我能做到 我过去提交了几个有关 SwingWorkers 等的问题 每一个我都以为我已经做到了 但后来发现我仍然需要学习 希望这一次不是那样的一次 话
  • org.apache.commons.codec.digest.Md5Crypt.md5Crypt 函数。 linux下出现异常,windows下正常

    我们正在使用commons codec加密密码 使用org apache commons codec digest Md5Crypt md5Crypt功能 在Windows环境下工作正常 但在CentOS上却抛出异常 我们有3台centOS
  • 为什么下面代码的输出是Thread[main,5,main]

    public class test1 public static void main String args TODO Auto generated method stub Thread t Thread currentThread Sys
  • java中日期转换dd-MMM-yyyy到dd-MM-yyyy

    在Java中将23 Mar 2011转换为23 03 2011的最简单方法是什么 感谢大家 这似乎解决了这个问题 try Calendar cal Calendar getInstance cal setTime new SimpleDat
  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • 获取包中声明的所有 Java 类的名称

    我正在编写一个功能 它将有助于将类放入我的程序的某个包中 另外 我只想要子类某个类的类 我需要这些类才能调用它们的静态方法 有没有一种自动的方法来做到这一点 如果是的话 速度慢吗 如果我不清楚 我想要的是这样的 ArrayList
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • 春季MVC。方法参数字段的默认值

    我有一个带有方法测试的简单控制器 RequestMapping produces application json ResponseBody public HttpEntity
  • Java 验证日期为 yyyyMMddHHmmss

    我想在java中验证给定的日期格式为yyyyMMddHHmmss 状况 应符合格式 yyyyMMddHHmmss 它应该验证当前日期 它应该验证与当前小时有 3 小时或 3 小时差异的小时数 如果满足所有三个条件 Java 方法应返回 tr
  • ASTParser:解析绑定后查找声明节点

    我创建了一个启用了绑定的 AST 当我稍后解析绑定时 我得到了一个有效的 ITypeBinding 但是 当我想要获取绑定的声明 Node 时 它 总是返回 null 除非 ITypeBinding 在 sourceFile 中声明 这是我
  • Struts2中的变量声明

    Struts2中如何声明变量并为该变量赋值 使用设置标签
  • 在没有EOF的情况下停止读取java中的输入

    In 问题 如何停止读取输入 我的程序继续运行 要求更多输入 public static void main String args throws Exception BufferedReader br new BufferedReader

随机推荐

  • android 动画列表中出现 OutOfMemory 错误

    我的绘图中有大约 100 多个图像 帧 每个图像的大小都是 1 5 kbs 分辨率为 480 x 272 现在 当我在动画列表 xml 中添加这些图像 帧 并尝试运行它时 我收到此 OutOfMemory 错误 我已在互联网上搜索 但找不到
  • “child_added”和“value”firebase 之间的区别?

    我发现两者之间有一点区别child added and value在 firebase 中返回数据时 使用value我可以测试一下是否snapshot val 已经返回了一些东西或者没有像这样使用它 获取数据 ref orderByChil
  • 重置并重新启动pygame程序不起作用

    当要求用户重新启动时 我在 pygame 中重置游戏时遇到问题 该程序的构造如下 import board as b class Gui def init self pygame init self gamestate b GameStat
  • 从文件中读取行,迭代每一行和该行中的每个字符

    我需要读取一个文件 获取每一行 迭代每一行并检查该行是否包含 aeiuo 中的任何字符以及是否包含至少 2 个字符 这段代码是 Rust 惯用的吗 如何检查一个文件中是否有多个字符String 到目前为止 我在谷歌和代码窃取方面的尝试 us
  • Kivy 安装出错 - Windows 10(以前可以工作,但在 gstreamer 之后就不行了)

    尝试在 Windows 10 中安装 Kivy 使用以下命令安装基础知识 python m pip install upgrade pip wheel setuptools python m pip install docutils pyg
  • NSOperations 队列和处理应用程序退出

    我即将创作一系列NSOperations 并在队列中运行它们 它们都是连续的并且一次运行一个 这些操作将从网络获取数据并创建和保存核心数据管理对象 应用程序退出的情况如何处理 由于操作在分离线程中运行 如何让主线程等待 直到当前操作 安全
  • iOS 中当年的天数

    我想找到今年今天的天数 例如 如果今天是 2012 年 3 月 15 日 我应该得到 75 31 29 15 或者我们可以简单地说今天到当年 1 月 1 日之间的天数 Use the ordinalityOfUnit的方法NSCalenda
  • php5 mail()函数sendmail错误

    我正在尝试使用 php 的 mail 函数 但不断收到错误 我已经通过安装了sendmailsudo apt get install sendmail 编辑了我的 etc php5 cli php ini文件将以下文本添加到这些行 send
  • 为什么 `define?` 返回字符串或 nil?

    在红宝石中 为什么会defined 返回一个字符串 大多数其他 Ruby 方法以 返回一个布尔值 这是为了支持功能请求而进行的黑客攻击 还是故意滥用 ruby 约定 为什么 例子 defined super gt super defined
  • Facebook登录成功后如何获取用户详细信息

    我尝试了这个 当 isSessionValid getDetails 直接 else facebook authorize 然后 getDetails 在 onActivityResult public class MainActivity
  • ggplot2 中的分面

    我有这个数据集 https dl dropboxusercontent com u 73950 data csv数据集包含 3 个变量 以下是我现在可视化数据的方式 library ggplot2 library reshape2 libr
  • Obj-C 检查照片库中是否已存在图像

    在我的应用程序中 我必须实现保存图像功能 我已经成功地保存了这样的内容 UIImage image UIImage imageNamed actualBackground UIImageWriteToSavedPhotosAlbum ima
  • 替换 JSON 对象中的变量

    我正在编写 JavaScript 代码 我想在其中替换 JSON 对象中的字符串 我的代码如下 var obj name name is name work name is doctor maritial status unmarried
  • CocoaPods 和迦太基

    我有一个关于 Carthage 和 Cocoapods 的项目 它们都有一个共同的依赖项 准确地说是 PureLayout 奇怪 但项目编译良好 没有任何有关类重新声明等的错误 所以问题是 为什么它有效 以及当我调用 PureLayout
  • 当键盘向上移动时,如何使文本字段保持在原位?迅速

    我创建了一个包含 4 个字段和一个按钮的表单 视图层次结构如下所示 主 UIVIew 视图 重命名为 contentView 在 contentView 之上我有 4 个字段和 1 个以编程方式创建的按钮 当 viewDidLoad 被触发
  • 生产环境中 NLog 日志中的行号消失

    我使用 callsite 参数配置了 NLog 布局 使其具有方法名称和行号 并且它在本地运行良好 如下所示 Application Start Global asax cs 33 但它正在改变Application Start没有生产线号
  • 如何使用 XmlWriter 在元素中编写命名空间

    我正在将代码从 vbs 更改为 C 但我在 XMLwriter 方面遇到问题 如何使用 XML write 在 XML file 中获取此类输出 我有这样的代码 using XmlWriter writer XmlWriter Create
  • Phonegap JQM 固定位置页眉/页脚在关闭 iOS 键盘后移动

    我正在尝试在 Phonegap 项目中使用 JQM 在 iOS 应用程序中创建固定页眉和页脚 我有一个使用可折叠 DIV 的页面 并且 DIV 内有一个文本输入 页眉和页脚的一切都很好 直到我展开 DIV 并将某些内容输入到文本字段中 一旦
  • 如何对 AVAssetWriter 输出进行颜色管理

    我无法使渲染视频的颜色与源内容的颜色相匹配 我将图像渲染到 CGContext 中 将支持数据转换为 CVPixelBuffer 并将其作为帧附加到 AVAssetWriterInputPixelBufferAdaptor 中 这会导致我绘
  • 如何使用 JSTL 在 jsp 页面中迭代 ArrayList>

    我正在尝试使用 JSTL 显示数据库中的值 因为它不可重复使用 所以有标签 我一直在根据我之前的问题使用另一个场景 实现 的其他策略 我开始使用 servlet 转到表的视图页面 我无法像该链接中那样使用一维数组 因此我使用了 ArrayL