我在JSF中发布了以下文档。
<h:panelGrid columns="2">
<h:outputText value="Klubbnamn"></h:outputText>
<h:inputText name="clubname" value="#{club.name}"></h:inputText>
</h:panelGrid>
<h:commandButton value="Spara" action="#{serviceHCP.saveClub(club) }"></h:commandButton>
写作åäö作为发布的价值会让我回到原来的状态。在xhtml文件中编写的所有内容看起来都应该是只有发布的值才会出现乱码。如果我在java类中对其进行硬编码,它将被正确保存在数据库中。所以我确信帖子有问题。
我尝试将网页切换到is0-8859-1而没有结果。 Tomcat报告默认为utf-8。
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><html xmlns="http://www.w3.org/1999/xhtml"><head><link type="text/css" rel="stylesheet" href="/BowlingFacelets/faces/javax.faces.resource/theme.css?ln=primefaces-aristo" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Default title</title>
<link rel="stylesheet" type="text/css" href="hcp-style.css" /></head>
<body>
.....
<td>ID</td>
<td>klubb</td>
</tr>
<tr>
<td>1</td>
<td>åäö</td>
....
答案 0 :(得分:1)
这肯定看起来像请求编码的问题。您应该使用FireBug或Wireshark之类的工具检查HTTP POST的请求字符编码标头。
在请求标头中查找Content-Type
。它必须包含:charset=utf-8
如果不是这种情况,您的设置中的某些内容是错误的,因为JSF应该处理请求字符编码。
尽管您可以尝试在自制过滤器中设置字符编码。它可能是这样的:
@WebFilter("/*")
public class CharEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
}
另见:
类似问题: