芯片组件它没有更新managebean中的列表模型使用下一个教程芯片你我正在尝试更新ap:芯片组件的模型,我使用的是Apache tomcat 9和primefaces 6.2,我在这个列表中添加了一些数据使用PostConstruct,数据列表显示在组件中,但是当视图中添加一些项目时,模型管理bean中没有修改任何项目,查看记录器后items.size()保持不变,视图中的组件行为反应为预期的。在 Windows 机器上,它按预期工作。
我的 xhtml
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:cmp="http://xmlns.jcp.org/jsf/composite/cmp">
<h:form id="formChips">
<p:outputLabel for="items" value="Items: " /><br/>
<p:chips id="items" value="#{beanChipsViewer.items}" inmediate="true" >
<p:ajax event="itemSelect" listener="#{beanChipsViewer.chipsSelect}" update=":itemList chips"/>
<p:ajax event="itemUnselect" listener="#{beanChipsViewer.chipsDeselect}" update=":itemList chips"/>
<p:ajax event="change" process="@this" update="chips" delay="300" />
<p:ajax event="valueChange" process="@this" update="chips" delay="300" />
<p:ajax event="click" process="@this" update="chips" delay="300" listener="#{beanChipsViewer.mostrar}" />
<p:ajax event="mousedown" process="@this" update="chips" delay="300" />
<p:ajax event="mouseup" process="@this" update="chips" delay="300" />
</p:chips>
<br/>
<p:commandButton value="Save" icon="ui-icon-check" update=":itemList" action="#{beanChipsViewer.agregar()}"
actionListener="#{beanChipsViewer.mostrar}"
/>
<br/>
</h:form>
<br/>
<p:outputPanel id="itemList">
<p:repeat value="#{beanChipsViewer.items}" var="item">
<h:outputText value="#{item}"/>
<br/>
</p:repeat>
</p:outputPanel>
<h:panelGroup id="chips">
<h:outputText value="#{beanChipsViewer.items}" />
</h:panelGroup>
<br/>
这是托管 bean 编码:
@Named
@ViewScoped
public class BeanChipsViewer implements Serializable {
private String itemSelected;
private String itemUnselected;
private static final Logger logger = LoggerFactory.getLogger(BeanChipsViewer.class);
@PostConstruct
public void init(){
for(int i=0;i<20;i++)
items.add("etiqueta "+i);
}
private List<String> items = new ArrayList<String>();
public List<String> getItems() {
return items;
}
public void setItems(List<String> items) {
this.items = items;
}
public void agregar(){
logger.info("Entra " +items.size());
items.add("nitro");
logger.info("zize after intro" +items.size());
UtilsPrimefaces.executeUpdatePF("itemList");
}
public void mostrar(){
logger.info("Entra mostrar");
for(String m:items){
logger.info("chipItem "+ m);
}
}
public void chipsSelect(SelectEvent e){
logger.info("chip seleted"+e.getObject().toString());
this.setItemSelected(e.getObject().toString());
items.add(e.getObject().toString());
logger.info("items size afteR chipselected "+ items.size());
}
public void chipsDeselect(UnselectEvent e){
logger.info("chip deselect"+e.getObject().toString()+" "+items.size());
this.setItemUnselected(e.getObject().toString());
}
public void phaseListener(PhaseEvent e){
List<FacesMessage> messages = e.getFacesContext().getMessageList();
System.out.println(messages.size());
}