Bom dia a todos,
Preciso muito de uma ajuda!!
Estou usando primefaces 2.2 e JSF 2, vejam o trecho abaixo:
<p:dataTable var="row" value="#{marcaBean.marcas}"
paginator="true" rows="5"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15"
style="width:400px" >
<p:column>
<f:facet name="header">
<h:outputText value="Marca" />
</f:facet>
<h:outputText value="#{row.descricao}" />
</p:column>
<p:column style="width:32px">
<p:commandButton action="#{marcaBean.edit}" ajax="false" image="ui-icon ui-icon-search">
<f:setPropertyActionListener value="#{row}" target="#{marcaBean.marca}" />
</p:commandButton>
</p:column>
<p:column style="width:32px">
<p:commandButton action="#{marcaBean.remove}" image="ui-icon ui-icon-delete" onclick="return confirm('Confirma exclusao?');">
<f:setPropertyActionListener value="#{row}" target="#{marcaBean.marca}" />
</p:commandButton>
</p:column>
</p:dataTable>
O que ocorre no código acima, é que o botão de EDIÇÃO não redireciona para a página, fica uma página em branco. Abaixo segue código do Controller:
public String edit(){
setMarca(marcas.getRowData());
return "/pages/marca/edit.jsf";
}
public String remove() {
try {
setMarca(marcas.getRowData());
MarcaDAO dao = MarcaDAOHibernate.getInstance();
dao.delete(getMarca());
} catch (DAOException e) {
JsfUtil.addErrorMessageExcecao(e, e.getMessage());
}
setMarca(null);
return "/pages/marca/show.jsf";
}
O mais estranho, é que debugando, ele entra no ManagedBean, executa tudo normal, só não leva para a página correta!!
O outro problema é que não posso acentuar nada, que dá a exception: Invalid byte 2 of 3-byte UTF-8 sequence.
Desde já agradeço.
Alguém já passou por isso??
:?:
Mertz
Outubro 6, 2011, 2:31pm
#3
Oi!!!
Tenta fezer isto, não sei se é a melhor maneira
return “pages/marca/show.jsf?faces-redirect=true”;
Vc está usando facelets ou o mapeamento no web.xml .jsf?
se for facelets usa .xhtml pra chamar a página
Ate mais…
Marlise
Olá Mertz,
Estou usando facelets sim.
Que mapeamento você se refere no web.xml :?:
O mapping no web.xml está assim:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Então, fiz uns testes, e nada.
Notei que a action exeduta corretamente, o managedbean executa com sucesso, retorna a String:
return "/pages/marca/edit.jsf?faces-redirect=true";
Mas ai é exibida uma tela em branco.
Posta como fica a URL ao redirecionar. Provavelmente está colocando uma URL que não existe.
Mertz
Outubro 6, 2011, 3:39pm
#7
Voce já olhou no do faces config, pode ser isto… o mapeamento da navegação
Abraços.
Pessoal, me desculpem!!
Falha minha, esqueci de add o template na página
<ui:composition template="…/template/template.xhtml">
Desde já agradeço a paciencia…
:oops:
Alguém se habilita sobre esse erro: Invalid byte 2 of 3-byte UTF-8 sequence.
Mertz
Outubro 7, 2011, 8:30am
#9
OI!!
como vc colocou no template eu uso assim
[code]<?xml version='1.0' encoding='UTF-8' ?>
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />[/code]
Nunca tive problema com isto…
Bom dia,
Eu tenho por habito quebrar as páginas em vários arquivos, veja:
form.xhtml
<ui:composition 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:p="http://primefaces.prime.com.tr/ui">
<h:panelGrid id="grid" columns="1">
<h:outputLabel for="marca" value="#{rotulo.marca}" />
<p:inputText id="marca" value="#{marcaBean.marca.descricao}" required="true" />
<p:message for="marca" />
</h:panelGrid>
</ui:composition>
edit.xhtm
<ui:composition template="../template/template.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:p="http://primefaces.prime.com.tr/ui">
<ui:define name="pageTitle">
<h:outputText value="#{rotulo.titulo}"></h:outputText>
</ui:define>
<ui:define name="content">
<h:form id="form" prependId="true">
<p:panel header="Edicao de Marcas">
<ui:include src="form.xhtml" />
<br />
<p:commandButton id="btnSalvar" action="#{marcaBean.update}" value="#{rotulo.botao_salvar}" image="ui-icon ui-icon-disk" ajax="false"/>
<p:commandButton id="btnVoltar" action="#{marcaBean.list}" value="#{rotulo.botao_voltar}" image="ui-icon ui-icon-close" ajax="false" immediate="true"/>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
Note que na form, não há referencia ao template template="../template/template.xhtml"
, aí estáva todo problema dei um copiar/colar nas demais paginas e não notei isso.
Agora em relação ao encoding…vou colocar <meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8” /> para ver o que ocorre, estava sem.
Olá, não foi necessário colocar o "meta", apenas adicionei no topo da página
<?xml version="1.0" encoding="ISO-8859-1" ?>
Resolvido.
Obrigado.
Mertz
Outubro 7, 2011, 9:51am
#12
Usa de preferência na sua template assim
<?xml version='1.0' encoding='UTF-8' ?>