我有一个场景,我有一个SelectOneMenu
<h:selectOneMenu value="#{bean.names}" valueChangeListener="#{bean.templChangeListner}" required="true" requiredMessage="Please select an Equipment type">
<f:selectItem itemLabel="-------Select Names------"
itemValue="${null}" noSelectionOption="true" />
<f:selectItems value="#{bean.fetchnames()}" var="spec"
itemLabel="#{spec.specName}" itemValue="#{spec.specificationId}" />
<a4j:ajax event="valueChange" render="outputPanel"
immediate="true" execute="@this"/>
</h:selectOneMenu>
在valueChange
我必须render
有
<a4j:outputPanel id="outputPanel">
<c:forEach items="#{ban.genericFeaturesList}"
var="genFeatVar" varStatus="genericIndex">
...............
...............
...............
<!--Lots of logic to render component -->
</c:forEach>
我的问题是,当valueChange
发生时,outputPanel
会再次呈现
genericFeaturesList
将包含新的更新数据?正如我在valueChangeListener
方法中添加重定向时所看到的那样,在UI中正常工作以及我在UI中删除重定向值时无法正确呈现。
FacesContext.getCurrentInstance().getExternalContext().redirect("PageName")
答案 0 :(得分:0)
JSF可以轻松呈现并生成运行时HTML DOM对象如果我们使用JSF组件而不是<c:forEach...>
<h:panelGroup id="outputPanel" rendered="#{not empty ban.genericFeaturesList}">
<ui:repeat value="#{ban.genericFeaturesList}" var="instance">
......
......
......
</ui:repeat>
<h:panelGroup>
...试试这个。祝你好运!!!