我遇到的情况是我需要为ui中的每一行执行一个特定的组件:repeat:
<h:form id="form">
<h:panelGroup id="mediaCards" layout="block">
<ui:repeat id="media" value="#{mediaManager.entries}" var="m">
<div class="media-card">
<h:outputText id="keyword" value="#{m.keyword}" />
<h:outputText id="producer" value="#{m.producer}" />
<h:outputText id="location" value="#{m.location}" />
<!-- many other fields -->
</div
</ui:repeat>
<h:panelGroup>
<ui:remove>actual solution</ui:remove>
<h:commandButton value="Send keywords to Server">
<f:ajax execute="mediaCards"/>
</h:commandButton>
</h:form>
目前我执行的整个HTML太重了,因为我有很多媒体卡,我只是在执行每一行的每个关键字。
作为替代方案,我可以为每个关键字附加一个ajax-change侦听器。但是在每个变更事件上进行服务器通信也不是最好的。
<h:outputText id="keyword" value="#{m.keyword}">
<f:ajax/>
</h:outputText>
我希望拥有的是
的动态方法<h:commandButton value="Send keywords to Server">
<f:ajax execute="media:0:keyword media:1:keyword media:2:keyword media:3:keyword"/>
</h:commandButton>
我们能以优先干净的方式做到这一点吗?
注意:我使用mojarra 2.2.14没有primcefaces但omnifaces。
修改 替换ui:用c重复:foreach导致同样的问题:
<c:forEach value="#{mediaManager.entries}" var="m" varStatus="row">
<div class="media-card">
<h:outputText id="keyword_#{row.index}" value="#{m.keyword}" />
</div
</c:forEach>
<ui:remove>what to do here?</ui:remove>
<h:commandButton value="Send keywords to Server">
<f:ajax execute="keyword"/>
</h:commandButton>