【问题标题】:Primefaces Chips component does not add item to ListPrimefaces Chips 组件未将项目添加到列表
【发布时间】:2019-04-29 22:06:51
【问题描述】:

芯片组件它没有更新 managebean 中的列表模型 使用下一个教程 chips u 我正在尝试更新 p:chips 组件的模型,我使用的是 Apache tomcat 9 和 primefaces 6.2,我添加了一些数据在这个使用 PostConstruct 的 List 中,数据列表显示在组件中,但是当视图中添加了一些项目时,模型管理 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());
    }

【问题讨论】:

  • 为什么你有 inmediate="true" 会跳过所有验证和绑定。
  • 您好,感谢您的评论,没有 inmediate="true",仍然是相同的行为,我无法升级 primefaces 版本,因为它是旧系统维护。
  • 如果您要添加新特性/功能,如何进行维护?维护也是您经常对汽车进行的操作。用新油更换旧油,更换过滤器......与用新油更换旧 PrimeFaces 相同
  • okey @Kukeltje 感谢您的观察。

标签: jsf primefaces


【解决方案1】:

我必须使用下一个导入

import javax.faces.view.ViewScoped;
import javax.inject.Named;

我正在将@ManageBean 与 CDI 混合使用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 2015-06-12
    • 1970-01-01
    • 2022-10-25
    相关资源
    最近更新 更多