- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 javabean 的 ArrayList,我使用 <c:forEach
在 JSP View 中对其进行迭代现在我想格式化输出并提供基于分组的小计。分组由 sql 查询设置。我让它工作的一种方法是使用一堆 jSTL <c:set tags
在jsp View 中记住上一行的数据然后是一堆<c:if
做出决定。
A 值一千字
使用 JSTL 在我的 PC 上本地工作,但是当我从 Eclipse 部署到我的开发服务器以在 Intranet 上进行测试时,我收到“代码太大,无法尝试 {”错误。我认为原因是因为我使用了太多 <c:sets
.
我倾向于使用 Java 代码进行小计。但是,我如何将小计与传递给 View 的 bean 数组列表关联起来呢?如果我将逻辑移到我的 servlet 中,我是否应该创建另一个 bean 来为摘要行建模?然后将该 bean 注入(inject)到在 View 中迭代的数组中?我迷路了。关于更好的方法有什么想法吗?
== 编辑:添加 JSTL <c:forEach
用于评论的循环(为简洁起见,删除了一堆行)
<c:if test="${list != null}">
<table border="0" width="95%" cellspacing="0" cellpadding="0" class="tableBlackBorder">
<tr>
<td>
<table width="100%" border="0" cellpadding="1" class="sortable" id="sortable">
<tr>
<td width="115" nowrap class="phoneTableTitle">Action</td>
<td class="phoneTableTitle">Line Code</td>
<td class="phoneTableTitle">Program</td>
<td class="phoneTableTitle">Year</td>
<td class="phoneTableTitle">Jan<br>hrs</td>
<td class="phoneTableTitle">Feb<br>hrs</td>
<td class="phoneTableTitle">Nov<br>hrs</td>
<td class="phoneTableTitle">Dec<br>hrs</td>
<td class="phoneTableTitle">Total<br>hrs</td>
</tr>
<c:set var="prevLinecode" value="" />
<c:set var="prevProgram" value="" />
<c:set var="totJan" value="" />
<c:set var="totFeb" value="" />
<c:set var="totNov" value="" />
<c:set var="totDec" value="" />
<c:set var="totSub" value="" />
<c:forEach var="ctc" items="${list}" varStatus="status">
<c:if test="${status.first}">
<tr class="TrainingTableRowBG">
<td NOWRAP class="TableOutputText"><a href="?method=view&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">view</a> - <a href="?method=edit&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">edit</a> - <a href="?method=delete&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">delete</a></td>
<td class="TableOutputText"><c:out value="${ctc.linecode}" /></td>
<td class="TableOutputText" NOWRAP><c:out value="${ctc.shop_order_range.program_name}" /></td>
<td class="TableOutputText"><c:out value="${ctc.year}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.jan}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.feb}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.nov}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.dec}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.lineSum}" /></td>
<c:set var="lineJan" value="${ctc.jan}" />
<c:set var="lineFeb" value="${ctc.feb}" />
<c:set var="lineNov" value="${ctc.nov}" />
<c:set var="lineDec" value="${ctc.dec}" />
<c:set var="lineSub" value="${ctc.lineSum}" />
</tr>
</c:if>
<c:if test="${ctc.linecode == prevLinecode}" >
<tr class="TrainingTableRowBG">
<td width="115" NOWRAP class="TableOutputText"><a href="?method=view&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">view</a> - <a href="?method=edit&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">edit</a> - <a href="?method=delete&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">delete</a></td>
<td class="TableOutputText"><c:out value="${ctc.linecode}" /></td>
<td class="TableOutputText" NOWRAP><c:out value="${ctc.shop_order_range.program_name}" /></td>
<td class="TableOutputText"><c:out value="${ctc.year}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.jan}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.feb}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.nov}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.dec}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.lineSum}" /></td>
<c:set var="lineJan" value="${lineJan + ctc.jan}" />
<c:set var="lineFeb" value="${lineFeb + ctc.feb}" />
<c:set var="lineNov" value="${lineNov + ctc.nov}" />
<c:set var="lineDec" value="${lineDec + ctc.dec}" />
<c:set var="lineSub" value="${lineSub + ctc.lineSum}" />
</tr>
</c:if>
<c:if test="${ctc.linecode != prevLinecode && !status.first}" >
<tr class="CTCSummary">
<td colspan="2">Summary For Contract: </td>
<td><c:out value="${prevContract}" /></td>
<td colspan="11" class="TableRowBGSubNav"></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineJan}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineFeb}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineNov}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineDec}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineSub}" /></td>
<c:set var="progJan" value="${progJan + lineJan}" />
<c:set var="progFeb" value="${progFeb + lineFeb}" />
<c:set var="progNov" value="${progNov + lineNov}" />
<c:set var="progDec" value="${progDec + lineDec}" />
<c:set var="progSub" value="${progSub + lineSub}" />
</tr>
<c:if test="${ctc.shop_order_range.program_name != prevProgram && !status.first}" >
<tr class="CTCProgramSummary">
<td colspan="2">Summary for Program:</td>
<td><c:out value="${prevProgram}" /></td>
<td colspan="11" class="TableRowBGSubNav"></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progJan}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progFeb}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progNov}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progDec}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progSub}" /></td>
<c:set var="totJan" value="${totJan + progJan}" />
<c:set var="totFeb" value="${totFeb + progFeb}" />
<c:set var="totNov" value="${totNov + progNov}" />
<c:set var="totDec" value="${totDec + progDec}" />
<c:set var="totSub" value="${totSub + progSub}" />
<c:set var="progJan" value="" />
<c:set var="progFeb" value="" />
<c:set var="progNov" value="" />
<c:set var="progDec" value="" />
<c:set var="progSub" value="" />
</tr>
</c:if>
<tr class="TrainingTableRowBG">
<td width="115" NOWRAP class="TableOutputText"><a href="?method=view&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">view</a> - <a href="?method=edit&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">edit</a> - <a href="?method=delete&cost_to_complete_id=<c:out value="${ctc.cost_to_complete_id}" />">delete</a></td>
<td class="TableOutputText"><c:out value="${ctc.linecode}" /></td>
<td class="TableOutputText" NOWRAP><c:out value="${ctc.shop_order_range.program_name}" /></td>
<td class="TableOutputText"><c:out value="${ctc.year}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.jan}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.feb}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.nov}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.dec}" /></td>
<td class="TableOutputText"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${ctc.lineSum}" /></td>
<c:set var="lineJan" value="${ctc.jan}" />
<c:set var="lineFeb" value="${ctc.feb}" />
<c:set var="lineNov" value="${ctc.nov}" />
<c:set var="lineDec" value="${ctc.dec}" />
<c:set var="lineSub" value="${ctc.lineSum}" />
</tr>
</c:if>
<c:set var="prevLinecode" value="${ctc.linecode}" />
<c:set var="prevProgram" value="${ctc.shop_order_range.program_name}" />
<c:if test="${status.last}" >
<tr class="CTCSummary">
<td colspan="2">Last Summary For Contract: </td>
<td><c:out value="${prevContract}" /></td>
<td colspan="11" class="TableRowBGSubNav"></td>
<td width="31" class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineJan}" /></td>
<td width="31" class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineFeb}" /></td>
<td width="31" class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineNov}" /></td>
<td width="31" class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineDec}" /></td>
<td width="31" class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${lineSub}" /></td>
<c:set var="progJan" value="${progJan + lineJan}" />
<c:set var="progFeb" value="${progFeb + lineFeb}" />
<c:set var="progNov" value="${progNov + lineNov}" />
<c:set var="progDec" value="${progDec + lineDec}" />
<c:set var="progSub" value="${progSub + lineSub}" />
</tr>
<tr class="CTCProgramSummary">
<td colspan="2">Summary for Program:</td>
<td><c:out value="${prevProgram}" /></td>
<td colspan="11" class="TableRowBGSubNav"></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progJan}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progFeb}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progNov}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progDec}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${progSub}" /></td>
<c:set var="totJan" value="${totJan + progJan}" />
<c:set var="totFeb" value="${totFeb + progFeb}" />
<c:set var="totNov" value="${totNov + progNov}" />
<c:set var="totDec" value="${totDec + progDec}" />
<c:set var="totSub" value="${totSub + progSub}" />
</tr>
</c:if>
</c:forEach>
<tr class="CTCTotalSummary">
<td colspan="2">TOTAL:</td>
<td></td>
<td colspan="11" class="TableRowBGSubNav"></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${totJan}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${totFeb}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${totNov}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${totDec}" /></td>
<td class="TableRowBGSubNav"><fmt:formatNumber type="number" minIntegerDigits="1" minFractionDigits="2" value="${totSub}" /></td>
</tr>
</table>
</td>
</tr>
</table>
</c:if>
最佳答案
JSP 最终被编译成单个 try
堵塞。 try
中代码的限制 block 在大多数 JVM 中为 64KB。当编译的 JSP 超过此值时,您将收到此错误。我建议将 JSP 的大部分重构为另一个 JSP 页面,并通过 <jsp:include>
包含它。 .可以通过 <jsp:param>
传递参数并通过 ${param.name}
访问它们必要时。为了更进一步,您还可以将通用逻辑重构为 custom taglib。 .
关于java - Iterating over a list of Javabeans 格式化输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5318027/
我正在尝试表达以下内容: 给定一个矩阵和两个索引增量,返回矩阵中所有数字的四倍体:沿行,列或对角线的四倍体。 use std::iter::Iterator; use std::iter::Peeka
假设我们有以下类组成角色 Iterable : class Word-Char does Iterable { has @.words; method !pairize($item)
我编写了一个 ADT 排序二叉树,其功能如下: public Iterator getInorderIterator(){ return new InorderIterator(); } 有效
在包装(内部)迭代器时,通常必须将 __iter__ 方法重新路由到底层可迭代对象。考虑以下示例: class FancyNewClass(collections.Iterable): def
尽管如此,我遍历了以下 NSSet , NSMutableArray , NSFastEnumeration文档,我找不到下面提到的场景的令人满意的来源: 此处,NSMutableArray、NSAr
我发现在 Python 中 collections.Iterable 和 typing.Iterable 都可以用于类型注释和检查对象是否可迭代,即 >isinstance(obj, collecti
我想拆分实现 Iterator 的对象的输出分为两个实现 Iterator 的对象和 Iterator .由于其中一个输出的迭代次数可能比另一个多,因此我需要缓冲 Iterator 的输出。 (因为我
我正在尝试用 Rust 编写一个简单的迭代器: #[derive(Debug)] pub struct StackVec { storage: &'a mut [T], len: us
什么意思: Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element 在this (Swift 标准库)swift 实例
调用 anIterable.iterator() 会返回新的迭代器还是现有的迭代器?它依赖于 Iterable 的实现吗? 更具体地说,以下代码是否按预期工作(即内部循环将从头开始迭代)? for (
我正在尝试转换 &str 的矢量对成一个 HashMap使用以下代码片段: use std::collections::HashMap; fn main() { let pairs = vec!(
这将使安全地迭代同一元素两次成为可能,或者为在项目类型中迭代的全局事物保持某种状态。 类似于: trait IterShort where Self: Borrow, { type I
我在 String 的字符上使用迭代器: pub fn is_yelling(message: &str) -> bool { let letters = message.chars().fi
这将使安全地迭代同一元素两次成为可能,或者为在项目类型中迭代的全局事物保持某种状态。 类似于: trait IterShort where Self: Borrow, { type I
要在 Rust 中实现迭代器,我们只需要实现 next 方法,如 in the documentation 所解释的那样.但是,Iterator 特征 has many more methods .
我正在为多个结构实现 Iterator 特性并遇到了一些问题。为什么为 Rows 实现 Iterator 显示错误?这是一个链接:link to playground 基本上为什么这不起作用? str
我将集合转储到磁盘上。当请求时,应该检索这些集合(没问题)和 iterator应该为它构建返回对检索到的值的引用。 iterator之后被丢弃了,我不再需要收藏了。我也希望它被删除。 到目前为止我尝试
我正在尝试为实现特征的结构实现默认迭代器。我的特征称为 DataRow,代表一行表格单元格,如下所示: pub trait DataRow { // Gets a cell by index
Rust 中是否有提供 iter() 的 Trait方法?我只找到了特征 IntoIterator ,供应into_iter() . 这里要明确一点:我不想要 Iterator特性,提供 next()
我想在迭代器上定义一个 .unique() 方法,使我能够在没有重复的情况下进行迭代。 use std::collections::HashSet; struct UniqueState {
我是一名优秀的程序员,十分优秀!