|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
JSF кирилица
|
|
Автор |
bion () |
Публикувано | 07.03.07 10:03 |
|
Здравейте колеги,
Не съм сигурен че тук е правилното място на този въпрос, като гледам JSF не е много популярен в БГ.
Имам следният въпрос. До сега все съм писал някви проекти дето са на английски и никога не съм кирилизирал JSF приложение. Опитвам се да кирилизирам едно и резултата е катастрофален.
JSP страницата ми изглежда така:
<%@page language="java" pageEncoding="WINDOWS-1251" contentType="text/html; charset=CP1251" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:loadBundle basename="resources.application" var="bundle"/>
<f:view>
<html>
<head>
<title>
<h:outputText value="#{bundle['welcome.title']}" /></title>
</head>
<body>
<h:outputText value="#{bundle['welcome.heading']}" />
<h:outputText value="#{bundle['welcome.message']}" />
</body>
</html>
</f:view>
Както виждате от хедъра енкодинга е сетнат на 1251. В ресурс бъндела също съм го сетнал да се сейва на 1251 от еклипс-а. Когато стартирам в браузера приложението, ми показва един голям и дебел среден пръст, под форманата на маймуни. Бахти!!!! Айде някой ако се е занимавал с кирилизация да помогне.
ПС: Ползвам Jboss 4.0.5 възможно ли е той да скапва нещата? Май той ми е основният заподозрян!
| |
Тема
|
Re: JSF кирилица
[re: bion]
|
|
Автор |
the_brain (непознат
) |
Публикувано | 07.03.07 11:18 |
|
напражи си енkодинг филтер и го регистрирай в web.xml там сетваш енкодинга в хедъра на http-то. по-добре ползвай обаче utf-8 понеже е стандарт и няма да имаш проблем с различните OS
| |
|
Не мисля че encoding filter-a е предвиден да се ползва съвместно със Java server faces. Убеден ли си че именно това е начина, можеш ли да ме препратиш към някакви интернет ресурси или да ми дадеш по дълго обяснение от 1 ред?
| |
Тема
|
Re: JSF кирилица
[re: bion]
|
|
Автор |
Matrix_N (Just a human) |
Публикувано | 07.03.07 16:56 |
|
Java Server Faces най грубо казано представлява един Servlet, който се явява контролер. Не виждам какъв е проблема да се реши с Filter.
| |
Тема
|
Re: JSF кирилица
[re: bion]
|
|
Автор | fir4o (Нерегистриран) |
Публикувано | 08.03.07 09:25 |
|
Ами стандартните java.util.Properties четат само Latin-1 кодиране, така че твоето windows-1251 просто не се чете правилно. В този случай се прави друго. Използваш native2ascii - една програма от JDK-то, за да конвертираш файла в Latin-1. Той съответна заменя кирилските символи с escape последователност и всичко си тръгва. Ако ползваш ANT - в него има същият таск.
| |
Тема
|
Re: JSF кирилица
[re: bion]
|
|
Автор |
the_brain (непознат
) |
Публикувано | 09.03.07 17:29 |
|
/*
* UTF8EncodingFilter.java
*/
package com.itt.ecs.web.util;
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;
/**
* This class is used for UTF-8 encoding
*
* @author Adrian Mitev
*/
public class UTF8EncodingFilter implements Filter {
/**
* @param config
* @throws javax.servlet.ServletException
*/
public void init(FilterConfig config) throws ServletException {
}
/**
* Sets the request and response character encoding to UTF-8
*
* @param request
* @param response
* @param chain
* @throws java.io.IOException
* @throws javax.servlet.ServletException
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void destroy() {
}
}
кода на филтъра
| |
Тема
|
Re: JSF кирилица
[re: bion]
|
|
Автор | Aвтoмaтизaтop (Нерегистриран) |
Публикувано | 15.03.07 13:12 |
|
Ако искаш да запазиш сегашната си схема, трябва да направиш точно две неща, които следват. Ако не, виж след тях.
1. Ако твоите bundles са написани в .properties файлове, тогава си ги прекодирай с native2ascii програмката -- тя е част от JDK-то. Отделен въпрос е, че някои IDE-та го правят вместо теб, когато стартираш или дебъгваш уеб-проекта си.
2. Името на кодировката ти е грешно -- в UNIX/Linux може и да е "cp1251", но в HTML/XML е "windows-1251".
Съвсем друг въпрос е, че го правиш по глупавия начин. В JSF не се дава така кодировката, прави се чрез XML пролога, ето така:
<?xml version="1.0" encoding="windows-1251" ?>
Както се прави във всеки XML файл. Никакви мистични директиви на съответния framework.
И накрая, зарежи 8-битовите фиксирани кодировки, ползвай UTF-8. Ако не знаеш, той е разширеине на US-ASCII, направено така, че US-ASCII символите (демек латиницата) да са в абсолютно същия формат, в какъвто са били преди, а останалите езикови символи са няколко-байтови с променлива дължина, т.е. с една кодировка поддържаш ВСИЧКИ езици. Всички нови браузъри поддържат UTF-8 кодировката, вкл. и Internet Explorer 5.5, а той хич не е нов, отдавна при това.
Поздрави.
| |
|
Защото е безсмислено затова. Има много по елементарен, ефикасен и бърз начин. Да решиш проблемът със филтър е все едно да ползваш пещ за топене на стомана за да си сготвиш чипс.
| |
|
Мерси за отговора макар че го чета със месец закъснение. Това е правилното решение на проблемът ми. Казвам го само за протокола.
Поздрави и благодаря.
| |
Тема
|
Re: JSF кирилица
[re: bion]
|
|
Автор |
Matrix_N (Just a human) |
Публикувано | 03.04.07 11:34 |
|
Значи е по добре да пипаш и да добавяш на една камара страници едно и същот отколото да напишеш един обикновен клас?
ПП: Стоманата не виждам защо трябва да се топи в пещи. Обикновенно пещите се използват за закаляване, нормализация или отвръщане на стоманата. А това с топенето се нарича леене, и тъй като стоманата има прекалено ниско съдържание на въглерод няма как да се лее, затова чугуна се лее, защото има по високо съдържание на въглерод и се намира над евтектоидната крива в желязо - циментитната диаграма.
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|