Model Class --Cancellation有一个[cancellationDetails]集合。我想在jsp页面中显示该组的对象。
AppServiceProvider
控制器
public class Cancellation {
@OneToMany(fetch = FetchType.LAZY, mappedBy="cancellation")
private Set<cancellationDetails> cancel ;
public class cancellationDetails {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cancelId", nullable = false)
private Cancellation cancellation;
JSP - &gt;试图从列表中显示该组。
@RequestMapping(value = "/cancellationRecords", method = RequestMethod.GET)
public ModelAndView getList() {
List<Cancellation> cancellationRecords = dataservice.getCancellationRecords();
return new ModelAndView("master/CancellationRecords_master","cancellationList",cancellationRecords);
}
错误
<c:forEach items="${cancellationList}" var="user">
<c:set value ="${cancellationList.cancel}" var="set">
<tr>
<td><c:out value="${user.cancelId}" /></td>
<td><c:out value="${user.merchant.merchant_name}" /></td>
<td><c:out value="${user.merchantNBR}" /></td>
<td><c:out value="${user.merchant.merchant_status}" /></td>
<td><c:out value="${user.merchant.handin_date}" /></td>
<td><c:out value="${user.merchant.close_date}" /></td>
<td><c:out value="${user.closingReason}" /></td>
<!--from set--> <td><c:out value="${set.achRejectAmount}"/></td>
<td><c:out value="${user.merchant.nsbcagent_id}" /></td>
<td><c:out value="${user.merchant.nsbcagent_name}" /></td>
</tr>
</c:set>
</c:forEach>
答案 0 :(得分:2)
遇到非法标签&#34; c:set&#34;标签,给定其属性。
错误消息基本上表示<c:set>
标记不应该有正文。
换句话说,它不允许使用这种语法:
<c:set ...>
<some />
<other />
<tags />
</c:set>
相反,您需要以下语法:
<c:set ... />
<some />
<other />
<tags />
set变量仅在同一范围内的后续标记中可用。
那就是说,为了迭代一个集合,你实际上需要另一个<c:forEach>
。因此,您应该这样做<c:out value="${set.achRejectAmount}" />
和<c:set>
,而不是<c:forEach items="${user.cancel}" var="cancel">
<c:out value="${cancel.achRejectAmount}" />
</c:forEach>
:
<suite name="Excel Control File Suite Set"
thread-count="30" configfailurepolicy="continue">
<test name="Excel Test" parallel="instances">
<classes>
<class name="com.selenium.engine.TestRunner1">
</class>
</classes>
</test>
<test name="Excel Test 1" parallel="instances">
<classes>
<class name="com.selenium.engine.TestRunner2">
</class>
</classes>
</test>
</suite>
答案 1 :(得分:0)
@BalusC的答案并不完全正确。您可以在<c:set>
- 标记中包含内容。但是,如果内容已包含属性<c:set>
,则不允许您在value=""
- 标记中包含内容。 (这是有道理的,因为JSP解释器在两者都存在时不知道要设置什么)。
这也是@Rishi发布的代码示例:JSP包含value=""
- 属性以及标记正文中的内容。
我偶然发现了这个问题,因为我在我的JSP中混淆了var=""
和value=""
:
<c:set value="foo">Hello World</c:set>
显然应该说var="foo"
,所以要注意这一点。