<?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>
当我输入äüö
并提交表单时,它在标准输出显示为äöü
。
但是如果我使用ajax,那么这不会发生。
这是如何引起的?如何解决?
答案 0 :(得分: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>
必须在<{1}}内 ,而不是在外面。此外,您应该使用<h:body>
而不是<h:head>
,以便让JSF自动包含正确的Ajax脚本。