2014-09-06 45 views
0

我有一个包含@ElementCollection注释的属性的实体。此属性是我添加电话(电话)的字符串列表。我将这些电话显示在primefaces的dataTable中。删除行数据表?

如何删除与选定的行这个telphone?

我正在试着这个。

实体

@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", [email protected](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); 
    } 

Managed 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中加入?

回答

0

我解决了使用<f:setPropertyActionListener/>

这里的问题我怎么没

<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;   
    }