Неверный набор символов для hS: inputText в JSF при первой отправке (только) - PullRequest
2 голосов
/ 10 марта 2012

В следующей форме мы пытаемся вернуть вводимые пользователем данные в JSF h:inputText или PrimeFaces 'p:inputText. Странное поведение наблюдается при вводе нелатинских символов (японский, иврит и т. Д.):

При первом запросе мы получаем нераспознанный набор символов, а при втором запросе - правильный результат.

Примеры ввода / вывода (только при первом запуске):

  1. Японский : вход = 日 выход = æ ¥

  2. Иврит : вход = א выход = ×

JSF:

<?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:p="http://primefaces.prime.com.tr/ui">
    <body>
        <h:form>   
            <h:outputLabel value="Name:"/>                        
            <h:inputText value="#{newTestController.registeredCustomerFirstName}"/>
            <h:commandButton value="Continue" action="#{newTestController.RegisteredNewCustomer(actionEvent)}"/>
        </h:form> 
    </body>
</html>

Бэк-бин:

@ManagedBean(name = "newTestController")
@SessionScoped
public class NewTestController {

    private String registeredCustomerFirstName;

    public String getRegisteredCustomerFirstName() {
        return registeredCustomerFirstName;
    }

    public void setRegisteredCustomerFirstName(String registeredCustomerFirstName) {
        this.registeredCustomerFirstName = registeredCustomerFirstName;
    }

    public void RegisteredNewCustomer(ActionEvent actionEvent) throws Exception {
    }
}

Ответы [ 3 ]

4 голосов
/ 15 марта 2012

Как указано выше - необходимо определить набор символов по умолчанию для сервера приложений.

Для стеклянной рыбы: добавьте <parameter-encoding default-charset="UTF-8" /> к glassfish-web.xml.

Информацию о других серверах приложений см. В блоге BalusC об этой проблеме.

0 голосов
/ 30 января 2013

Указание кодировки в файле конфигурации может быть недостаточно.Попробуйте использовать p: commandButton вместо h: commandButton.По умолчанию p: commandButton использует ajax, в то время как h: commandButton выполняет передачу без ajax.

0 голосов
/ 25 сентября 2012

Это связано с <<a href="http://java.net/jira/browse/GLASSFISH-18007" rel="nofollow">http://java.net/jira/browse/GLASSFISH-18007>.Это исправление было сделано, чтобы предотвратить появление предупреждающего сообщения, когда мы безоговорочно устанавливаем кодировку UTF-8, что, как нам кажется, является тем, что мы хотим, но в этом случае мы чувствовали, что безопаснее этого не делать.Мы создали связанную проблему в Мохарре, <<a href="http://java.net/jira/browse/JAVASERVERFACES-2217" rel="nofollow">http://java.net/jira/browse/JAVASERVERFACES-2217>.Итог: правильная установка кодировки в конфигурации приложения является правильным решением.Реализация уже делает правильные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...