2013-10-21 28 views
1

如上mentiones的问题,我需要为JSF 2 F:UI内PARAM:重复

<ui:composition> 
    <h:link> 
     <h:outputText value="link with params" /> 
     <ui:repeat var="parameter" value="#{bean.getCurrentParameter}"> //customClass 

      test: #{parameter.name} #{parameter.value} //output is fine 

      <f:param name="#{parameter.name}" value="#{parameter.value}" /> 
     </ui:repeat> 
    </h:link> 
</ui:composition> 

创建“动态” PARAMS不幸的是,“测试”正确返回所有的值,但是当我将鼠标悬停链接,没有一个参数设置(“page.xhtml”,而不是“page.xhtml?param1 = ddd & param2 = sss ...”)

为了unterstand为什么我需要这个,我想得到当前页面的所有参数并添加/删除一个(点击的链接是我想要删除/添加的链接)。

我需要为每个链接生成自己的参数(当param1 = 1,2默认情况下,一个链接具有例如“param1 = 1,2,3”(附加3),另一个具有“param1 = 1,2,4“(追加4))

+1

您的测试看起来是错误的。尝试在**''内创建'' **,而不是。此外,看起来像你的''有一个错字,因为它没有正确关闭。 –

+0

嗨,我不能把h:链接里面,因为我不想多个链接与一个参数,我想一个链接与许多参数。我希望现在这个问题更加清楚 – Niko

回答

5

经典taghandlers vs component tags问题。 <ui:repeat/>是构建视图树后运行的组件标记,而<f:param/>是视图构建期间放置在视图树中的标记处理程序。这意味着<f:param/>会在<ui:repeat/>进入页面之前被解析和处理。因此当<f:param/>需要时,var="parameter"不可用。

要解决,使用<c:forEach/>标签来代替:

<h:link> 
    <h:outputText value="link with params" /> 
    <c:forEach var="parameter" items="#{bean.getCurrentParameter}"> 
     test: #{parameter.name} #{parameter.value} 
     <f:param name="#{parameter.name}" value="#{parameter.value}" /> 
    </c:forEach> 
</h:link>