3

我来自巴西,在这里我们有很多à é ô ó ç,等等,这是我的 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,在我的项目 Properties->Resources 中,我已将其更改Text file encodingISO-8859-1

我的login.xhtml页面上有一个master.xhtml名为 Usuário (User) 的标签,如果我使用字符á,并且没有它这个词是错误的,我会收到此错误:

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)

带走它是可行的á,但正如我所说,在葡萄牙语中这是必要的,我将使用许多其他带有口音的字符。

4

1 回答 1

4

您不应使用旧的 ISO-8859-1 字符集,而应使用新的 UTF-8 字符集。JSF已经默认使用UTF-8,它为世界统治做好了更好的准备。

将所有内容更改为 UTF-8 并更改您的 IDE 设置以在任何地方使用 UTF-8。在 Eclipse 中,最重要的设置是Window > Preferences > General > Workspace > Text File Encoding

在此处输入图像描述

然后,在左上角输入字段的类型过滤器文本中输入“编码”,并将对所有其他设置的更改重新应用到 UTF-8。

也可以看看:

于 2012-04-27T15:29:02.063 回答