在我的Seam应用程序中,我有一个Seam组件,它返回一个(@Datamodel
)项目列表,我想将其转换为一组<li>
HTML元素。我有这个工作没有问题。
但是现在,我想根据EL表达式拆分列表。因此EL表达式确定是否应该启动新的<ul>
元素。我尝试了以下方法:
<s:fragment rendered="#{action.isNewList(index)}">
<ul>
</s:fragment>
<!-- stuff that does the <li>'s goes here -->
<s:fragment rendered="#{action.isNewList(index)}">
</ul>
</s:fragment>
但这是无效的,因为<ul>
的嵌套是错误的。
我该怎么做?
答案 0 :(得分:1)
你可以使用JSF <f:verbatim>
标签来做到这一点,这个标签并不漂亮,但有效:
<f:verbatim rendered="#{action.isNewList(index)}">
<ul>
</f:verbatim>
<!-- stuff that does the <li>'s goes here -->
<f:verbatim rendered="#{action.isNewList(index)}">
</ul>
</f:verbatim>
答案 1 :(得分:0)
我不熟悉Seam Framework,但如果我理解正确的问题,这样的事情可能有用。
<!-- before your loop, open your first <ul> if the (@Datamodel) is not empty -->
<s:fragment rendered="#{action.isNewList(index)}">
</ul>
<ul>
</s:fragment>
<!-- stuff that does the <li>'s goes here -->
<!-- after your loop, close your last </ul> if the (@Datamodel) is not empty -->
答案 2 :(得分:0)
我并不熟悉Seam,但是我在使用XSLT和其他基于XML的框架时看到了同样的问题。
通常有两种解决方案:
答案 3 :(得分:0)
你应该有这样的东西(我将使用伪代码):
<ul>
<s:for items="itemList" ...>
<s:fragment rendered="#{action.isNewList(index) && index > 0}">
</ul>
<ul>
</s:fragment>
<li>
<!-- stuff that does the <li>'s goes here -->
</li>
</s:for>
</ul>