【问题标题】:<c:catch> output value of the variable on the screen when no exception caught<c:catch> 未捕获到异常时屏幕上变量的输出值
【发布时间】:2012-07-05 15:21:56
【问题描述】:

在我的网络应用程序中,我必须给出这一行来检查一个对象是否有一个字段

<c:catch var="itemException">${item.masterOrderId}</c:catch>

但是,似乎当抛出异常时,页面按预期工作,但是当货币项目有一个字段 masterOrderId 时,页面会得到一行所有主订单 ID 的丑陋输出,像这样

      7876288237088001859330060608701482416601260870751365393358087099973546544808785323837468560876664746049371087079881351783808767780494694690870295666366152083001

当我尝试检查页面源时,有趣的是我找不到字符串。所以请让我知道我能做些什么来找出诀窍,这样我就可以做一些事情来避免讨厌的输出。

谢谢。

【问题讨论】:

  • 如果您不使用 catch 块并定位您知道具有 masterOrderId 的一项,是否会发生错误?当你说“页面得到一行所有主订单ID的丑陋输出”时,你的意思是这个'丑陋的行'是所有主ID放在一起吗?这是在 forEach 循环中,可以将它们全部输出到同一行吗?
  • @anotherdave 感谢您的快速回复。我应该提供更多的上下文细节。我正在创建一个适用于多个地方的表 tagx,但是现在订单表需要每个插入主 ID 的特定参数。我无法从 jspx 实现它,因为表的数据模型是 ${orders} 的列表,在表 tagx 中有一个 forEach 循环遍历行。所以是的,所有主订单 ID 的丑陋输出行是所有订单的所有主订单 ID 的串联。但是该行显示在表格之外,就像一个普通的字符串。
  • 您能否编辑您的问题以提供您的 语句的代码,包括 forEach 循环?不看代码就很难深入到它的核心,因为听起来你在 forEach 循环中但在表之外引用了 masterId。然而,您看到的字符串不在 HTML 源代码中的事实非常奇怪!

标签: jsp spring-mvc jstl tiles


【解决方案1】:

其实就是再看你的问题:

在我的网络应用程序中,我必须给出这一行来检查一个对象是否有一个字段

<c:catch var="itemException">${item.masterOrderId}</c:catch>

如果您在 JSP 中将此作为一行,如果 c:catch 标记没有出现异常,则它正在执行 EL 标记并将 ID 打印到页面。相反,您应该在将要使用它的位置捕获 ID。例如:

<table>
<c:forEach var="${item}" items="${items}">
    <c:catch var="itemException">
        <tr>
            <td>${item.a}</td>
            <td>${item.b}</td>
            <td>${item.masterOrderId}</td>
        </tr>
    </c:catch>
</c:forEach>
</table>

这样,如果出现异常,该行就会被隐藏,如果没有,则 ID 会在适当的位置输出。

【讨论】:

    猜你喜欢
    • 2013-02-25
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2019-04-03
    • 2018-08-07
    相关资源
    最近更新 更多