Fala galera,
Estou com um problema ao utilizar o rich:dataTable.
No meu table, tenho alguns <h:commandLink>, quando renderizam pela primeira vez eles funcionam, mas quando faço alguma requisição pelo a4j:commandButton ou uso a paginação do rich:datascroller, todos os commandLink somem, tirando os links e aparecendo apenas textos normais.
Alguém poderia me ajudar?
[]'s
RESOLVIDO: Consegui resolver galera, eu tava utilizando a tag , quando o datatable renderiza pela segunda vez, ela buga.
Flw
[/code]E ae galera,
Eu tenho a seguinte situação
rich:dataTable que lista os objetos e tem uma ação para excluir dentro de h:commandlink
A ação funciona corretamente na primeira vez, porém se eu utilizo a paginação do datascroller
ela para de funcionar.
pS.: scopo do meu manager bean esta como session
já tentei setar como false a facelets.BUILD_BEFORE_RESTORE
vou postar meu xhtml, web.xml e managedbean
xhtml
<rich:panel>
<f:facet name="header">
Setores Cadastrados
</f:facet>
<h:form id="formTableSetores">
<rich:dataTable id="tabelaSetores" onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
cellpadding="0" cellspacing="0" rows="10"
width="500" border="0" var="item" value="#{setorController.todos}">
<rich:column breakBefore="true">
<f:facet name="header">
ID
</f:facet>
<h:outputText value="#{item.pkIdSetor}" />
</rich:column>
<rich:column>
<f:facet name="header">
Setor
</f:facet>
<h:outputText value="#{item.nomSetor}" />
</rich:column>
<rich:column align="center">
<f:facet name="header">
Excluir
</f:facet>
<h:commandLink action="#{setorController.excluir}" immediate="true">
<img src="../image/deletar.png" height="15px" width="15px" border="0"/>
</h:commandLink>
</rich:column>
</rich:dataTable>
<rich:datascroller id="scrollSetor" for="tabelaSetores" maxPages="20" reRender="tabelaSetores"/>
</h:form>
</rich:panel>
web.xml
<?xml version="1.0"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<description>Facelets StarterKit</description>
<display-name>ProjetoPortaria</display-name>
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>facelets.REFRESH_PERIOD</param-name>
<param-value>2</param-value>
</context-param>
<context-param>
<param-name>facelets.BUILD_BEFORE_RESTORE</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>deepMarine</param-value>
</context-param>
<filter>
<filter-name>trinidad</filter-name>
<filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
</filter>
<filter>
<filter-name>openEntityManager</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter>
<description>Filtro para restringir entrada de usuario</description>
<filter-name>FiltroUsuario</filter-name>
<filter-class>br.gov.cofen.intranet.portaria.utils.SegurancaFiltro</filter-class>
</filter>
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>trinidad</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>openEntityManager</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>FiltroUsuario</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>resources</servlet-name>
<servlet-class>org.apache.myfaces.trinidad.webapp.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resources</servlet-name>
<url-pattern>/adf/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
[code]
@Controller(“setorController”)
@Scope(“session”)
public class SetorController {
private Setor setor;
private DataModel model;
@Resource
private DaoGenerico<Visita, Integer> visitaDao;
@Resource
private DaoGenerico<Setor, Integer> setorDao;
public SetorController(){}
public Setor getSetor() {
return setor;
}
public void setSetor(Setor setor) {
this.setor = setor;
}
public DataModel getModel() {
return model;
}
public void setModel(DataModel model) {
this.model = model;
}
public DaoGenerico<Setor, Integer> getSetorDao() {
return setorDao;
}
public void setSetorDao(DaoGenerico<Setor, Integer> setorDao) {
this.setorDao = setorDao;
};
public DaoGenerico<Visita, Integer> getVisitaDao() {
return visitaDao;
}
public void setVisitaDao(DaoGenerico<Visita, Integer> visitaDao) {
this.visitaDao = visitaDao;
}
public String novoSetor(){
this.setor = new Setor();
return "formSetor";
}
public DataModel getTodos(){
return model= new ListDataModel(setorDao.todos());
}
public Setor getSetorParaEditarExcluir(){
Setor setor = (Setor) model.getRowData();
return setor;
}
public String editar(){
setSetor(getSetorParaEditarExcluir());
return "formSetor";
}
public String salvar(){
boolean validaSetor=true;
try {
for(Iterator<?>iter=setorDao.todos().iterator();iter.hasNext();){
Setor s = (Setor)iter.next();
if(setor.getNomSetor().equalsIgnoreCase(s.getNomSetor())){
validaSetor=false;
}
}
//verifica se o nome do setor só inicia com letras
if(setor.getNomSetor().charAt(0)>=65 && setor.getNomSetor().charAt(0)<=90 ||
setor.getNomSetor().charAt(0)>=97 && setor.getNomSetor().charAt(0)<=122){
if(validaSetor){
if(setor.getPkIdSetor()==null){
setorDao.salvar(setor);
} else {
setorDao.atualizar(setor);
}
FacesUtils.mensInfo("Salvo com sucesso");
setor = new Setor();
}else{
FacesUtils.mensErro("Setor já cadastrado");
}
}else{
FacesUtils.mensErro("Nome do setor deve ser iniciado somente com letras");
}
} catch (InvalidStateException e) {
FacesUtils.mensErro("Erro ao cadastrar setor. Erro: "+e.getMessage());
}
return "sucessoSetor";
}
public String excluir(){
Setor setor= getSetorParaEditarExcluir();
boolean setorSemVisita=true;
try {
for(Iterator<?> iter=visitaDao.todos().iterator();iter.hasNext();){
Visita visita = (Visita)iter.next();
if(visita.getSetor().getPkIdSetor()==setor.getPkIdSetor()){
setorSemVisita=false;
}
}
//se setor ainda não possui visitas, o setor pode ser deletado
if(setorSemVisita){
setorDao.excluir(setor);
FacesUtils.mensInfo("Setor deletado com sucesso");
}
} catch (Exception e) {
FacesUtils.mensErro("Setor não pode ser deletado pois possui visitas cadastradas");
}
return "formSetor";
}
}[/code]
RESOLVIDO
putz perdi a tarde inteira em fóruns
quando resolvi testar o a4j:commandlink no lucar de <h:commandlink> funcionou certinho
caso alguém esteja com o msmo problema tenta ai
abraço