【问题标题】:Removing row datatable?删除行数据表?
【发布时间】:2014-09-06 20:40:28
【问题描述】:

我有一个实体,其中包含带有@ElementCollection 注释的属性。此属性是我添加的电话(电话)的字符串列表。我在 primefaces 的数据表中显示此电话。

如何删除选中行的电话?

我正在尝试这个。

实体

@Entity
public class UnidadeEscolar implements Serializable{    
    private static final long serialVersionUID = 1L;    

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @NotNull @Size(min=5, message="Informe o nome da unidade escolar")
    @Column(unique=true)
    private String nome;

    private String departamento;

    @Embedded
    private Endereco endereco;

    @ElementCollection
    @JoinTable(name="telefones_ue", joinColumns=@JoinColumn(name="ue_id"))
    private List<String> telefones = new ArrayList<String>();


/** adiciona telefones */
    public void addTelefone(String tel){
        telefones.add(tel);
    }

    /** remove telefone */
    public void removeTelefone(int row){
        telefones.remove(row);
    }

托管 Bean

@ManagedBean
@ViewScoped
public class UnidadeEscolarMB implements Serializable{  
    private static final long serialVersionUID = 1L;

    private UnidadeEscolar bean;
    private GenericDAO<UnidadeEscolar> dao;
    private List<UnidadeEscolar> unidades = null;   
    private String telefone = "";


    /** add telphone to entity */
    public void addTelefones(){
        //System.out.println(telefone);
        bean.addTelefone(telefone);
        telefone = "";
    }

    /** remove telphone of entity */
    public void removeTelefone(){
        bean.getTelefones().remove(telefone);
    }


    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

xhtml

<p:tab title="Contato">        
                <p:fieldset legend="Telefones">
                    <p:dataTable id="tabelaTelefones" widgetVar="datalistTelefones"
                                 value="#{unidadeEscolarMB.bean.telefones}" var="fone"
                                 emptyMessage="Nenhum registro encontrado"
                                 selectionMode="single"
                                 selection="#{unidadeEscolarMB.telefone}"
                                 rowKey="#{unidadeEscolarMB.bean.id}"                                                                                                                                                                                                
                            >
                            <p:column headerText="Telefone">
                                <h:outputText value="#{fone}"/>                         
                            </p:column>                 
                    </p:dataTable>


                    <p:commandButton actionListener="#{unidadeEscolarMB.removeTelefone()}" value="-" update="tabelaTelefones"/>

        </p:tab>

如何删除在 dataTable 中选择的电话?

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    我使用&lt;f:setPropertyActionListener/&gt;解决了这个问题

    我是怎么做的

    <p:tab title="Contato">        
                    <p:fieldset legend="Telefones">
                        <p:dataTable id="tabelaTelefones" widgetVar="datalistTelefones"
                                     value="#{unidadeEscolarMB.bean.telefones}" var="fone"
                                     emptyMessage="Nenhum registro encontrado"                                                                                                                                                                                                                                                          
                                >
                                <p:column headerText="Telefone">
                                    <h:outputText value="#{fone}"/>                            
                                </p:column>            
    
                                <p:column headerText="">
                                    <p:commandLink action="#{unidadeEscolarMB.removeTelefone()}" value="Excluir" update="tabelaTelefones">
                                        <f:setPropertyActionListener target="#{unidadeEscolarMB.telefone}" value="#{fone}"/>
                                    </p:commandLink>
                                </p:column>                    
    
                        </p:dataTable>
    
                        <p:inputMask id="telefone" widgetVar="telefoneMask" value="#{unidadeEscolarMB.telefone}" mask="(99)9-9999-9999" />
                        <p:commandButton actionListener="#{unidadeEscolarMB.addTelefones()}" value="+" update="telefone, tabelaTelefones"/>                
    
                        <p:selectBooleanCheckbox itemLabel="Adiciona9" onchange="setMaskTelefone()" id="checkBox" widgetVar="ckbox9" value="true" immediate="true"/>
                    </p:fieldset>       
            </p:tab>
    
    
    
    @ManagedBean
    @ViewScoped
    public class UnidadeEscolarMB implements Serializable{    
        private static final long serialVersionUID = 1L;
    
        private UnidadeEscolar bean;
        private GenericDAO<UnidadeEscolar> dao;
        private List<UnidadeEscolar> unidades = null;
        private String telefone = "";
    
    
        /** adiciona telefone ao bean */
        public void addTelefones(){
            //System.out.println(telefone);
            bean.addTelefone(telefone);
            telefone = "";
        }
    
        /** remove telefone do bean */
        public void removeTelefone(){        
            bean.getTelefones().remove(telefone);    
            telefone = "";
        }
    
    
        public String getTelefone() {
            return telefone;
        }
    
        public void setTelefone(String telefone) {
            this.telefone = telefone;        
        }
    

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 2018-09-30
      • 2021-09-27
      • 1970-01-01
      • 2011-05-10
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多