<?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,那么这不会发生。
这是如何造成的,我该如何解决?
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 脚本。