2
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html 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"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets" >
    <head>
    </head>

    <h:form>
        <h:body>
            <h:inputText value="#{editorBean.value2}" />
            <h:commandButton action="content.xhtml" value="Submit" />
        </h:body>
    </h:form>
</html>
  • 值 2 是会话范围的 ManageBean 中的字符串
  • 使用 JSF Mojarra 2.1.19
  • 玻璃鱼 3.1.2

当我输入äüö并提交表单时,它会显示äöü在标准输出中。

但是如果我使用ajax,那么这不会发生。

这是如何引起的,我该如何解决?

4

1 回答 1

2

JSF/Facelets 在整个过程中已经默认使用 UTF-8。

您只需要告诉 Glassfish 请求参数是使用 UTF-8 编码的,这样它就会使用 UTF-8 正确解码。打开/WEB-INF/glassfish-web.xml文件并将以下条目添加到<glassfish-web-app>

<parameter-encoding default-charset="UTF-8" />

顺便说一句,您<h:form>必须进入内部<h:body>而不是外部。此外,您应该使用<h:head>而不是<head>为了让 JSF 自动包含正确的 Ajax 脚本。

于 2012-06-06T13:41:32.697 回答