由ui:param或c设置的变量:在ui:repeat之外设置ui:repeat不可用

时间:2013-06-21 09:04:08

标签: jsf set variable-assignment uirepeat

我想定义一个变量并在页面的其他地方重用它。我使用<ui:param><c:set>在JSF中定义变量,并根据条件在<ui:repeat>中重置它,如下所示:

<ui:param name="title" value="default value"/>
<c:set var="title2" value="default val"/>                              
  <ui:repeat value="#{aClip.revisions}" var="revs" varStatus="revStat">
    <ui:repeat value="#{revs.metadataMap.entry}" var="entryLst">
        <ui:repeat value="#{entryLst}" var="entry">
          <ui:repeat value="#{entry.value}" var="metaVal">
              <ui:repeat value="#{metaVal.values}" var="aValue">
                  <ui:fragment rendered="#{metaVal.key eq 'Title'}">
                      rendered //this prints. condition is evaluted to true
                      <ui:param name="title" value="#{aValue}"/>
                      <c:set var="title2" value="#{aValue}"/>
                  title2 -- #{title2}   title -- #{title}    //prints
                  </ui:fragment>                                         

               </ui:repeat>
             </ui:repeat>
           </ui:repeat>
          </ui:repeat>
        </ui:repeat>                                
 title2 -- #{title2}    title -- #{title} //does not print value not even defualt val

我知道条件是真的并且设置了值,但是当我尝试在循环外使用它时,它不会评估。在定义时,它甚至没有评估为变量赋予的值。

这是如何引起的?如何解决?

0 个答案:

没有答案