Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF - проблема с кодировками! / 8 сообщений из 8, страница 1 из 1
29.03.2012, 15:49:30
    #37729731
osvaldv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF - проблема с кодировками!
Доброго времени суток уважаемые знатоки! Опишу суть проблемы. Использую в качестве среды NetBeans 7. Делаю пример из книги по jsf - JavaServer Faces (авторы Гэри и Хорстманн). Есть две страницы jsf. На первой мы вводим имя пользователя и пароль, затем нажимаем на кнопку Далее (введенные значения сохраняются в бине) и попадаем на вторую страницу, где отображается приветствие типа "Привет (имя пользователя)!". Имя пользователя берется из бина, у бина время жизни - сеанс. Вопрос - как сделать, чтобы при вводе русских букв они сохранялись и отображались нормально? Пока что отображается что то типа этого мир.
...
Рейтинг: 0 / 0
29.03.2012, 16:17:17
    #37729833
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF - проблема с кодировками!
Поставить на страницах кодировку UTF-8
...
Рейтинг: 0 / 0
29.03.2012, 16:21:48
    #37729843
osvaldv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF - проблема с кодировками!
забыл ник,

она стоит по умолчанию. Но это не помогает. Иногда отображается нормально, а иногда нет.
...
Рейтинг: 0 / 0
29.03.2012, 16:40:13
    #37729889
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF - проблема с кодировками!
авторона стоит по умолчанию. Но это не помогает. Иногда отображается нормально, а иногда нет.

А я вот не уверен, многие контейнеры как-то наплевательски относятся к установке кодировки. Вы в дебаге точно видели что у response.getCharacterEncoding() возвращает UTF-8? Советую написать свой фильтр, который в начале реквеста принудительно устанавливает кодировку через response.setCharacterEncoding("UTF-8") и скажите что получится. Просто ваша проблема довольно типична, и я решал написанием своего фильтра.

С другой стороны ваша фраза авторИногда отображается нормально, а иногда нет. меня весьма смущает, ибо в моем случае не отображалось в 100%, так что дело может быть сложнее, но почему-то мне кажется что вы или что-то недоговариваете, или где-то ошиблись.
...
Рейтинг: 0 / 0
29.03.2012, 16:40:48
    #37729891
osvaldv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF - проблема с кодировками!
она наверное не стоит, кодировка utf 8. Как её поставить? Объявить тег <meta>?
...
Рейтинг: 0 / 0
29.03.2012, 16:48:32
    #37729919
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF - проблема с кодировками!
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
package fi.foo.filters;

  import java.io.IOException;
  import javax.servlet.Filter;
  import javax.servlet.FilterChain;
  import javax.servlet.FilterConfig;
  import javax.servlet.ServletException;
  import javax.servlet.ServletRequest;
  import javax.servlet.ServletResponse;

  public class CharsetFilter implements Filter
   {
   private String encoding;

   public void init(FilterConfig config) throws ServletException
   {
    encoding = config.getInitParameter("requestEncoding");

    if( encoding==null ) encoding="UTF-8";
   }

   public void doFilter(ServletRequest request, ServletResponse response, FilterChain       next)
   throws IOException, ServletException
   {
    // Respect the client-specified character encoding
    // (see HTTP specification section 3.4.1)
    if(null == request.getCharacterEncoding())
      request.setCharacterEncoding(encoding);


    /**
 * Set the default response content type and encoding
 */
 response.setContentType("text/html; charset=UTF-8");
 response.setCharacterEncoding("UTF-8");


    next.doFilter(request, response);
   }

    public void destroy(){}
   }



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<!--CharsetFilter start--> 

  <filter>
    <filter-name>CharsetFilter</filter-name>
    <filter-class>fi.foo.filters.CharsetFilter</filter-class>
      <init-param>
        <param-name>requestEncoding</param-name>
        <param-value>UTF-8</param-value>
      </init-param>
  </filter>

  <filter-mapping>
    <filter-name>CharsetFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>



Этого должно хватить, бывает что возникают еще более экзотические проблемы, тогда вам сюда - http://stackoverflow.com/questions/138948/how-to-get-utf-8-working-in-java-webapps
...
Рейтинг: 0 / 0
29.03.2012, 16:53:10
    #37729935
osvaldv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF - проблема с кодировками!
забыл ник,

спасибо большое за совет! Сейчас буду пробовать.
...
Рейтинг: 0 / 0
30.03.2012, 11:20:30
    #37731018
osvaldv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF - проблема с кодировками!
забыл ник,

большое спасибо. Ваше решение помогло. Изначально кодировка не задавалась на jsf страницах. А как интересно задать кодировку на странице? Использовать тэг <meta>? (Интересно для общего развития).
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF - проблема с кодировками! / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]