DBに保存する前に送信された値を印刷/再表示する際に問題がすでに発生しているため、リンク先の質問では、DBエンコーディングが原因から除外されています。したがって、問題は HTTP リクエストのエンコーディングにあります。
文字セットが指定された JDBC 接続 URL、
jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8
DB に送信する前に、SQL クエリの値を UTF-8 を使用してデコードするように MySQL JDBC ドライバーに指示するだけです。これはJSFの範囲を完全に超えているだけでなく、リンクされた質問と同じ問題を抱えていることに絶対に確信がある場合、これが問題の原因でもありません。
文字セットが指定された XML プロローグ、
<?xml version='1.0' encoding='UTF-8' ?>
XML ツリーを構築する前に、UTF-8 を使用して XML ソースをデコードするように XML パーサーに指示するだけです。実際に使用されている XML パーサーは、JSF ビューのビルド時に Facelets によって内部的に使用される SAX です。この部分は、HTTP 要求/応答エンコーディングとはまったく関係がないため、問題の原因である可能性はほとんどありません。
HTTP 要求エンコーディングを設定する必要がありますが、いずれも HTTP 要求エンコーディングを設定しません。あなたがリンクした質問は、Glassfishサーバーに対してそれを行う方法をすでに示しています。ただし、あなたの場合、JBoss AS サーバーを使用しています。その場合、Glassfish 固有の設定は適用されず、JBoss はそのようなものをサポートしません。ジョブを実行するには、カスタム サーブレット フィルターを導入する必要があります。例えば
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
// ...
}