我想更新ui:param值或在ui中使用类似的东西:使用条件重复循环。这个想法如下(只是一个aprox,而不是最终的实现,但我想是可以理解的):
<ui:param name="marginLeftNode" value="#{myBean.initialMarginValue}" />
<ui:repeat value="#{myBean.viewWrapper.linkMap.entrySet().toArray()}" var="map">
<ui:repeat var="link" value="#{map.value}" varStatus="status">
<li style="margin-left: #{marginLeftNode}%" class="ico-#{link.getStyleCss()}-ayuda">
<a href="#{link.getUrlLink()}">#{link.getTitle()}</a>
</li>
<!-- Code conditions that doesn't works in any way as I've readed in the links after code -->
<c:if test="#{marginLeftNode gt 4}">
<ui:param name="marginLeftNode" value="#{myBean.viewWrapper.nodeList.get(status.index).depth}" />
</c:if>
<ui:fragment rendered="#{marginLeftNode gt 4}">
<ui:param name="marginLeftNode" value="#{myBean.viewWrapper.nodeList.get(status.index).depth}" />
</ui:fragment>
<!-- End code conditions: these are the two solutions c:if and ui:fragmen I tried -->
</ui:repeat>
</ui:repeat>
我不能使用c:if if ui:repeat因为不起作用(Specify conditional rendering of element inside <ui:repeat>? The <c:if> does not seem to work)而且我不能使用ui:fragment和ui:param,因为它也不起作用({{ 3}})
那么,任何想法如何解决?
答案 0 :(得分:1)
首先,如果可以使用JSF,请避免使用JSTL。这是一个解释如何在不同的步骤中执行JSTL和JSF的答案 - &gt; https://stackoverflow.com/a/3343681/4253629
要有条件地重新定义一个ui:param,例如,你可以这样做:
<ui:param
name="marginLeftNode"
value="#{marginLeftNode gt 4 ? myBean.viewWrapper.nodeList.get(status.index).depth : marginLeftNode }"/>
可能存在另一种解决方案,但这有效。
问候
答案 1 :(得分:0)
更改循环内的ui:param
没有实际价值。 ui:param
的真正目的是将运行时变量传递到模板客户端或包含文件中。在传递参数时,更改它的价值很小。如果你想要的只是在传递变量之后有条件地改变它的值,你可以使用JSTL的c:set
来设置一个页面范围的变量然后你可以使用
<ui:repeat value="#{myBean.viewWrapper.linkMap.entrySet().toArray()}" var="map">
<ui:repeat var="link" value="#{map.value}" varStatus="status">
<li style="margin-left: #{marginLeftNode}%" class="ico-#{link.getStyleCss()}-ayuda">
<a href="#{link.getUrlLink()}">#{link.getTitle()}</a>
</li>
<c:if test="#{marginLeftNode gt 4}">
<c:set var="marginLeftNode" value="#{myBean.viewWrapper.nodeList.get(status.index).depth}"/>
</c:if>
</ui:repeat>
然后,您可以在该视图中的任何位置访问您的设置变量#{marginLeftNode}