我有一个包含@ElementCollection
注释属性的实体。这个属性是我添加telphone(telefones)的String列表。我在一个数据表面显示这个电话。
如何在选中行的情况下删除此电话?
我正在尝试这个。
实体
@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中选择的telphone?
答案 0 :(得分: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;
}