rich:column sorting problem
lfcamargo Oct 7, 2011 9:31 AMFellows,
I have a problem with the sorting feature. I'm trying create a simple dataTable with sorting but it just works once.
The first time that I click on the header the sorts works fine, but when I click again it doesn't work anymore.
I'm following the example of the live demo. But I can't make it work.
I'm using:
Spring 3.0.5
Richfaces 3.3.3.Final.
JSF1.2
Follow my codes:
.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<a4j:form>
<rich:panel id="pnl">
<rich:dataTable var="_item" value="#{testeBean.lista}" reRender="pnl" id="table" >
<rich:column sortBy="#{_item.nome}" id="col1" sortable="true" >
<f:facet name="header">nome</f:facet>
<h:outputText value="#{_item.nome}" />
</rich:column>
<rich:column sortBy="#{_item.numero}" id="col2" sortable="true" >
<f:facet name="header">numero</f:facet>
<h:outputText value="#{_item.numero}" />
</rich:column>
</rich:dataTable>
</rich:panel>
</a4j:form>
</html>
ManagedBean
@Component
@Scope("session")
public class TesteBean {
private List<Teste> lista;
public TesteBean() {
lista = new ArrayList<Teste>();
for (int i = 0; i < 50; i++) {
lista.add(new Teste("Nome" + i, i));
}
}
/**
* Get the lista.
*
* @return the lista.
*/
public List<Teste> getLista() {
return lista;
}
/**
* Set the lista.
*
* @param lista The lista to set.
*/
public void List(ArrayList<Teste> lista) {
this.lista = lista;
}
}
ValueObject
public class Teste implements Serializable {
/** The serialVersionUID */
private static final long serialVersionUID = 2338342875466046563L;
private String nome;
private Integer numero;
public Teste(String nome, Integer numero) {
this.nome = nome;
this.numero = numero;
}
/**
* Get the nome.
*
* @return the nome.
*/
public String getNome() {
return nome;
}
/**
* Set the nome.
*
* @param nome The nome to set.
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* Get the numero.
*
* @return the numero.
*/
public Integer getNumero() {
return numero;
}
/**
* Set the numero.
*
* @param numero The numero to set.
*/
public void setNumero(Integer numero) {
this.numero = numero;
}
/**
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
result = prime * result + ((numero == null) ? 0 : numero.hashCode());
return result;
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
Teste other = (Teste) obj;
if (nome == null) {
if (other.nome != null) return false;
} else if (!nome.equals(other.nome)) return false;
if (numero == null) {
if (other.numero != null) return false;
} else if (!numero.equals(other.numero)) return false;
return true;
}
}
What I doing wrong, someone have the same problem?
Thanks a lot.