Problema Acentuação JSF + FACELETS ... ?!

2 respostas
R
Olá pessoal, Boa tarde. Estou passando por um problema em relação a integração de Facelets com JSF. O Que acontece é que tenho alguns JSF (XHTML) como o que postarei que tem reRender. Só que estes simplesmente NÃO FUNCIONAM quando temos acentuação envolvida no meio. Já tentei mudar pra UTF-8, pra ISO-8859-1. Tentei fazer diversas coisas que o pessoal na net falava e simplesmente não tive êxito. Portanto, gostaria que me ajudassem. Seguem os códigos:
Meu Layout
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE composition 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" xml:lang="pt-br"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:a4j="http://richfaces.org/a4j">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<ui:insert name="head"></ui:insert>
<title><ui:insert name="titulo" /><h:outputText
	value="Sistema de reserva - CIn U.F.P.E." /></title>
<link
	href="${facesContext.externalContext.requestContextPath}/css/layout.css"
	rel="stylesheet" />
<link
	href="${facesContext.externalContext.requestContextPath}/css/estilo.css"
	rel="stylesheet" />
<link
	href="${facesContext.externalContext.requestContextPath}/css/estiloTabelas.css"
	rel="stylesheet" />

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="corpo">
<div id="header"><img
	src="${facesContext.externalContext.requestContextPath}/imagens/layoutnew/layout3SemBack_02.png"
	width="814" height="27" /></div>
<div id="menu_esquerdo"><img
	src="${facesContext.externalContext.requestContextPath}/imagens/layoutnew/layout3SemBack_08.png"
	width="35" height="217" /></div>
<div id="centro">
<div id="col-um">
<div id="login" align="center"><ui:insert name="login">
	<ui:include src="/login/login.xhtml" />
</ui:insert></div>
<div id="loginBaixo-div"><img
	src="${facesContext.externalContext.requestContextPath}/imagens/layoutnew/layout3SemBack_11.jpg"
	width="318" height="85" /></div>
</div>
<div id="col-dois"><img
	src="${facesContext.externalContext.requestContextPath}/imagens/layoutnew/layout3SemBack_06.jpg"
	width="426" height="217" /></div>
</div>
<div id="menu_direito"><img
	src="${facesContext.externalContext.requestContextPath}/imagens/layoutnew/layout3SemBack_09.png"
	width="35" height="217" /></div>
<div id="footer">
<div id="footer-esquerdo"><img
	src="${facesContext.externalContext.requestContextPath}/imagens/layoutnew/layout3SemBack_13.png"
	width="35" height="489" /></div>
<div id="footer-central">
<div>
<div align="right" id="cabecalho"><h:panelGrid id="cabecalho"
	columns="1">
	<ui:insert name="cabecalho"></ui:insert>
</h:panelGrid></div>
<div id="conteudo" align="left"><h:panelGrid id="conteudo"
	columns="1">
	<ui:insert name="conteudo"></ui:insert>
</h:panelGrid></div>
</div>
</div>
<div id="footer-direito"><img
	src="${facesContext.externalContext.requestContextPath}/imagens/layoutnew/layout3SemBack_15.png"
	width="35" height="489" /></div>
</div>
</div>
</body>
</html>
Um dos arquivos que tem reRender
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:ui="http://java.sun.com/jsf/facelets" xml:lang="pt-br"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:a4j="http://richfaces.org/a4j">

<ui:composition template="/template/layout.xhtml">
	<ui:define name="head">
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<style>
<!--
.odd-row {
	background-color: #F0F0F0;
}
-->
</style>

	</ui:define>
	<ui:define name="cabecalho">
		<h:panelGrid columns="2">
			<h:outputText value="Listando reservas" styleClass="textoNegrito" />
		</h:panelGrid>
	</ui:define>
	<ui:define name="conteudo">
		<h:form>
			<rich:dropDownMenu id="menu" styleClass="textoSublinhado"
				value="#{inserirReservaBean.recurso.nome} - #{inserirReservaBean.recurso.localizacao}"
				jointPoint="tr">

				<rich:menuItem submitMode="none">
					<h:outputLink value="excluir.jsf">
						<h:outputText
							value="Excluir reservas feitas para #{inserirReservaBean.recurso.nome}"
							styleClass="textoNormal" />
					</h:outputLink>
				</rich:menuItem>
				<rich:menuItem submitMode="none">
					<h:outputLink value="listarflash.jsf">
						<h:outputText value="Listar no modo Calend&#65533;rio"
							styleClass="textoNormal" />
					</h:outputLink>
				</rich:menuItem>
				<rich:menuItem submitMode="none">
					<h:outputLink value="../recurso/listar.jsf">
						<h:outputText value="Voltar para listagem de recursos"
							styleClass="textoNormal" />
					</h:outputLink>
				</rich:menuItem>
			</rich:dropDownMenu>
		</h:form>
		<h:form>

			<rich:dataTable value="#{listagemDeReservasBean.lista}" var="reserva"
				width="100%" id="tableListagem">
				<f:facet name="header">
					<rich:columnGroup>
						<h:column>
							<h:outputText value="Data" />
						</h:column>
						<h:column>
							<h:outputText value="Inicio" />
						</h:column>
						<h:column>
							<h:outputText value="Fim" />
						</h:column>
						<h:column>
							<h:outputText value="Responsavel" />
						</h:column>
						<h:column>
							<h:outputText value="Motivo" />
						</h:column>
						<h:column>
							<h:outputText value="as" />
						</h:column>
					</rich:columnGroup>
				</f:facet>
				<rich:column>
					<h:outputText value="#{reserva.intervalo.dataString}"
						styleClass="textoNegritoMenor" />
				</rich:column>
				<rich:column>
					<h:outputText value="#{reserva.intervalo.horaInicial}"
						styleClass="textoNormal" />
					<h:outputText value=":" styleClass="textoNormal" />
					<h:outputText value="#{reserva.intervalo.minutoInicial}"
						styleClass="textoNormal" />
				</rich:column>
				<rich:column>
					<h:outputText value="#{reserva.intervalo.horaFinal}"
						styleClass="textoNormal" />
					<h:outputText value=":" styleClass="textoNormal" />
					<h:outputText value="#{reserva.intervalo.minutoFinal}"
						styleClass="textoNormal" />
				</rich:column>
				<rich:column>
					<h:outputText value="#{reserva.loginDoResponsavel}" />
				</rich:column>
				<rich:column>
					<h:outputText value="#{reserva.motivo}" />
				</rich:column>
				<rich:column>
					<h:commandButton image="/imagens/b1.jpg" alt="Atualizar"
						onclick="selecionarReservaAtualizar('#{reserva.codigo}')"
						rendered="#{usuarioBean.usuario.privilegio >= 2 || usuarioBean.usuario.login eq reserva.loginDoResponsavel}" />
					<h:outputLink value="#"
						onclick="selecionarReservaExcluir('#{reserva.codigo}')"
						endered="#{usuarioBean.usuario.privilegio >= 2 || usuarioBean.usuario.login eq reserva.loginDoResponsavel}">
						<h:graphicImage value="/imagens/b2.jpg" alt="Deletar"
							styleClass="linkNormal" />
					</h:outputLink>
				</rich:column>
			</rich:dataTable>

			<rich:jQuery name="style1" selector="#table tr:odd"
				query="addClass('odd-row')" />
		</h:form>
		<h:panelGrid columns="3" width="300px">
			<h:outputLink value="../recurso/listar.jsf">
				<h:graphicImage value="/imagens/b7.jpg" styleClass="linkNormal"
					alt="Voltar" />
				<h:outputText value="Voltar" styleClass="linkNormal" />
			</h:outputLink>
			<h:outputLink value="inserir.jsf" styleClass="linkNormal"
				rendered="#{usuarioBean.usuario.privilegio >=1}">
				<h:graphicImage value="/imagens/b5.jpg" styleClass="linkNormal"
					alt="Nova reserva" />
				<h:outputText value="Nova reserva" styleClass="linkNormal" />
			</h:outputLink>
			<h:outputLink value="listarflash.jsf">
				<h:graphicImage value="/imagens/b6.jpg" styleClass="linkNormal"
					alt="Calend&#65533;rio" />
				<h:outputText value="Calend&#65533;rio" styleClass="linkNormal" />
			</h:outputLink>

		</h:panelGrid>
		<a4j:form>
			<a4j:jsFunction name="selecionarReservaAtualizar"
				oncomplete="document.location.href='atualizar.jsf'">
				<a4j:actionparam name="param1"
					assignTo="#{atualizarReservaBean.codigoDaReserva}" />
			</a4j:jsFunction>
		</a4j:form>
		<h:form>
			<a4j:jsFunction name="selecionarReservaExcluir"
				action="#{listagemDeReservasBean.resetarListagem}">
				<a4j:actionparam name="param1"
					assignTo="#{excluirReservaBean.codigoExcluir}" />
				<a4j:support event="oncomplete" reRender="tableListagem" />
			</a4j:jsFunction>
		</h:form>
	</ui:define>

</ui:composition>
</html>
E o meu WEB.XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>reserve</display-name>
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</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.DEVELOPMENT</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>server</param-value>
	</context-param>
	<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>false</param-value>
	</context-param>
	<context-param>
		<param-name>org.ajax4jsf.SKIN</param-name>
		<param-value>wine</param-value>
	</context-param>
	<context-param>
		<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
		<param-value>com.sun.facelets.FaceletViewHandler</param-value>
	</context-param>
	<context-param>
		<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>org.ajax4jsf.COMPRESS_STYLE</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>org.ajax4jsf.xmlparser.ORDER</param-name>
		<param-value>NONE, NEKO, TIDY</param-value>
	</context-param>
	<filter>
		<display-name>Ajax4jsf Filter</display-name>
		<filter-name>ajax4jsf</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
		<init-param>
			<param-name>createTempFiles</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>maxRequestSize</param-name>
			<param-value>100000</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
		<dispatcher>ERROR</dispatcher>
	</filter-mapping>
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet>
		<display-name>CalendarioServlet</display-name>
		<servlet-name>CalendarioServlet</servlet-name>
		<servlet-class>
			ufpe.cin.sistemadereserva.apresentacao.servlet.CalendarioServlet
		</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>ListarReservasServlet</servlet-name>
		<servlet-class>
			ufpe.cin.sistemadereserva.apresentacao.servlet.ListarReservasServlet
		</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>CalendarioServlet</servlet-name>
		<url-pattern>/CalendarioServlet</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>ListarReservasServlet</servlet-name>
		<url-pattern>/ListarReservasServlet</url-pattern>
	</servlet-mapping>
	<login-config>
		<auth-method>BASIC</auth-method>
	</login-config>
</web-app>

Por favor, se tiver algum erro que possa estar causando isso ou dicas, qualquer coisa.

Muito agradecido.

2 Respostas

joaosouza

Olá rao_monteiro blz…

Coloca seu projeto e todos os seus XHTML como ISO-8859-1…
e em relação a acentuação nos reRender tenta escape=“false” na tag,
ou setEscape(false) no atributo do seu bean…

Falow !!!

R

joaosouza:
Olá rao_monteiro blz…

Coloca seu projeto e todos os seus XHTML como ISO-8859-1…
e em relação a acentuação nos reRender tenta escape=“false” na tag,
ou setEscape(false) no atributo do seu bean…

Falow !!!


Caro joaosouza, o problema foi resolvido graças à sua ajuda. Muitíssimo obrigado.

Ps.: Se não for pedir/perguntar de mais, o que esse “escape” faz, finalmente ?

Abraço.

Criado 7 de julho de 2008
Ultima resposta 8 de jul. de 2008
Respostas 2
Participantes 2