我来自巴西,在这里我们有很多à
é
ô
ó
ç
等字样,这是一个问题我的JSF项目。
我有一个master.xhtml
作为我所有网页的模板,现在是:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<meta http-equiv="pragma" content="no-cache"/>
<link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/assets/css/bootstrap.css" type="text/css" media="all" />
<title>#{masterController.projectName}</title>
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
</style>
</h:head>
<h:body>
<ui:fragment rendered="#{loginController.isLoggedIn}">
<ui:include src="../includes/top.xhtml"/>
</ui:fragment>
<ui:insert name="body" />
<hr />
<ui:fragment rendered="#{loginController.isLoggedIn}">
<ui:include src="../includes/footer.xhtml" />
</ui:fragment>
</h:body>
<script type="text/javascript" src="#{facesContext.externalContext.requestContextPath}/assets/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="#{facesContext.externalContext.requestContextPath}/assets/js/bootstrap.min.js"></script>
</html>
正如您所看到的,我的xml encondig与我的Content-Type
元标记一样正确。
我正在使用Eclipse和我的项目属性 - >资源我已将Text file encoding
更改为 ISO-8859-1 。
我的login.xhtml
页面上有一个标签,位于master.xhtml
内,名为Usuário(用户),如果我使用的是字符á
,如果没有它我就会出错,我得到了这个错误:
exception
javax.servlet.ServletException: null source
javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
root cause
java.lang.IllegalArgumentException: null source
java.util.EventObject.<init>(Unknown Source)
javax.faces.event.SystemEvent.<init>(SystemEvent.java:67)
javax.faces.event.ComponentSystemEvent.<init>(ComponentSystemEvent.java:69)
javax.faces.event.PostRestoreStateEvent.<init>(PostRestoreStateEvent.java:69)
com.sun.faces.lifecycle.RestoreViewPhase.deliverPostRestoreStateEvent(RestoreViewPhase.java:256)
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:245)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
将á
带走它可行,但正如我所说,用葡萄牙语是必要的,我会用很多其他带有重音的角色。
答案 0 :(得分:4)
你不应该使用旧的ISO-8859-1字符集,而是使用新的UTF-8字符集。 JSF默认情况下使用 UTF-8,这为世界统治做了更好的准备。
将所有内容更改为UTF-8并将IDE设置更改为在任何地方使用UTF-8。在Eclipse中,最重要的设置是 Window&gt;偏好&gt;一般&gt;工作区&gt;文本文件编码。
然后,在左上方输入字段的类型过滤器文本中输入“encoding”,并将更改重新应用于UTF-8以用于所有其他设置。