Oi pessoal!
A única maneira de ordenar uma tabela usando o IceFaces ou o JSF é implementando no bean o método de ordenação? Estou em um projeto grande, estamos aprendendo a lidar com esse framework agora e ter que implementar ordenação para todos os beans vai dar um trabalho gigantesco. Estou tentando pegar os dados de cada coluna de uma tabela sendo exibida para ordenar, mas o getValue só pega null. O código no bean é o seguinte, adaptado de um exemplo :
import java.util.<em>;
import javax.faces.component.</em>;
import javax.faces.context.<em>;
import javax.faces.event.</em>;
import java.util.ArrayList;
public class SortBean
{
private UICommand commandAlterar;
private UICommand commandRemover;
private UIInput inputNome;
public SortBean()
{
// inicia os componentes
initComponents();
}
ArrayList entrada= new ArrayList();;
[color=red] /*
* Método actionListener para ordenar uma coluna
*/
public void ordenar( ActionEvent event )
{
// obtém os valores dos componentes
String nome = (String) getInputNome().getValue();
//Ainda estou só testando se consigo pegar os nomes e colocar na List
entrada.add(nome);
// reinicia os componentes
initComponents();
}[/color]
private void initComponents()
{
setCommandAlterar(new UICommand());
setCommandRemover(new UICommand());
setInputNome(new UIInput());
}
/*
* Getters e setters.
*/
public UICommand getCommandAlterar() {
return commandAlterar;
}
public void setCommandAlterar(UICommand commandAlterar) {
this.commandAlterar = commandAlterar;
}
public UICommand getCommandRemover() {
return commandRemover;
}
public void setCommandRemover(UICommand commandRemover) {
this.commandRemover = commandRemover;
}
public UIInput getInputNome() {
return inputNome;
}
public void setInputNome(UIInput inputNome) {
this.inputNome = inputNome;
}
}
E o facelet:
<f:view xmlns:h=“http://java.sun.com/jsf/html” xmlns:f=“http://java.sun.com/jsf/core” xmlns:ice=“http://www.icesoft.com/icefaces/component”>
Resultado da busca
<ice:form id="tableForm">
<br/><br/>
<ice:dataTable id="table1" rows="3" value="#{agenda.table}" var="item"
sortColumn="#{agenda.sortColumnName}" sortAscending="#{agenda.sortAscending}">
<ice:column>
<f:facet name="header">
<ice:panelGroup>
<ice:commandSortHeader columnName="nome" arrow="true" actionListener="#{sort.ordenar}">
<ice:outputText value="Nome"/>
</ice:commandSortHeader>
</ice:panelGroup>
</f:facet>
<h:inputText id="nome" value="#{item.nome}" binding="#{sort.inputNome}" styleClass="inputsForms"/>
<ice:outputText value="#{item.nome}" />
[color=red]</ice:column>
<ice:column>
<f:facet name="header">
<ice:panelGroup>
<ice:commandSortHeader columnName="pagina" arrow="true" >
<ice:outputText value="Pagina"/>
</ice:commandSortHeader>
</ice:panelGroup>
</f:facet>
<ice:outputText value="#{item.pagina}"/>
</ice:column>[/color]
<ice:column>
<f:facet name="header">
<ice:panelGroup>
<ice:commandSortHeader columnName="nota" arrow="true" >
<ice:outputText value="Nota"/>
</ice:commandSortHeader>
</ice:panelGroup>
</f:facet>
<ice:outputText value="#{item.nota}"/>
</ice:column>
</ice:dataTable>
<ice:dataPaginator id="dataScroll" for="table1" paginator="true" fastStep="3" paginatorMaxPages="4">
<f:facet name="first">
<ice:graphicImage url="./pics/arrow-first.gif" style="border:none;" title="First Page"/>
</f:facet>
<f:facet name="last">
<ice:graphicImage url="./pics/arrow-last.gif" style="border:none;" title="Last Page"/>
</f:facet>
<f:facet name="previous">
<ice:graphicImage url="./pics/arrow-previous.gif" style="border:none;" title="Previous Page"/>
</f:facet>
<f:facet name="next">
<ice:graphicImage url="./pics/arrow-next.gif" style="border:none;" title="Next Page"/>
</f:facet>
<f:facet name="fastforward">
<ice:graphicImage url="./pics/arrow-ff.gif" style="border:none;" title="Fast Forward"/>
</f:facet>
<f:facet name="fastrewind">
<ice:graphicImage url="./pics/arrow-fr.gif" style="border:none;" title="Fast Backwards"/>
</f:facet>
</ice:dataPaginator>
</ice:form>
<ice:outputLink value="inicio.iface">
<f:verbatim>voltar</f:verbatim>
</ice:outputLink>
</f:view>
Qualquer ajuda é bem-vinda!