J'ai écrit un analyseur, qui peut analyser le texte Hiragana en texte Romaji. Puis j'ai fait une facelet que vous pouvez voir sur Picture1. Si j'entre un texte Hiragana et que je clique sur le bouton de traduction, il affiche du texte erroné dans les deux zones de texte. La bibliothèque de l'analyseur a des tests unitaires et tous les tests sont passés. J'ai également créé une petite interface graphique JavaFX en utilisant la même lib, et le bogue n'y est pas présent. Ce bogue ne se présente qu'après que je l'ai déployé et que je l'ai exécuté dans un navigateur. J'utilise JSF 2.2 et Glassfish 4.1.0 comme conteneur.Le champ de saisie JSF montre mojibake seulement à la première demande après le déploiement, alors cela fonctionne bien
Picture1: Quand je re-entrer dans le même texte après ces ordures a été montré, il fonctionne bien. Cela fonctionne comme prévu à tout autre moment. Vous pouvez le voir sur Picture2. J'entre le même texte et ça fonctionne bien après le bug initial.
Voici le code du index.xhtml:
<?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:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Convert Hiragana, Romaji</title>
</h:head>
<h:body>
<h:outputStylesheet library="css" name="styles.css"/>
<f:view>
<div class="H_OuterDiv">
<h1><h:outputText value="Hiragana to Romaji" /></h1>
<h:form>
<div class="H_HiraganaTextArea">
<h3><h:outputText value="Enter Hiragana" /></h3>
<h:inputTextarea cols="30" rows="20" value="# {hconverter.hiraganaInput}"></h:inputTextarea>
</div>
<div class="H_MiddleDiv">
<div class="H_ButtonsDiv">
<h:commandButton value="Translate" action="# {hconverter.convertHiraganaToRomaji()}"></h:commandButton>
</div>
</div>
</h:form>
<div class="H_RomajiTextArea">
<h3>
Enter Romaji Text
</h3>
<h:inputTextarea value="#{hconverter.romajiOutput}" cols="30" rows="20" />
</div>
</div>
</f:view>
</h:body>
</html>
Et voici le code du bean géré. La classe HiraganaLettersNew est un singleton.
@RequestScoped
@Named
public class Hconverter {
private String hiraganaInput = null;
private String romajiOutput = null;
public String getHiraganaInput() {
return hiraganaInput;
}
public void setHiraganaInput(String hiraganaInput) {
this.hiraganaInput = hiraganaInput;
}
public String getRomajiOutput() {
return romajiOutput;
}
public void setRomajiOutput(String romajiOutput) {
this.romajiOutput = romajiOutput;
}
public void convertHiraganaToRomaji() {
HiraganaLettersNew parser = HiraganaLettersNew.getInstance();
romajiOutput = parser.parseHiraganaString(hiraganaInput);
}
}
Quelqu'un pourrait-il s'il vous plaît me aider? Je suis nouveau sur les facelets et JavaEE, et je n'ai aucune idée de la raison de ce bug. Merci d'avance!
double possible de [Caractère mauvais jeu pour le h JSF: inputText le soutient en premier lieu (seulement)] (https://stackoverflow.com/questions/ 9647380/incorrect-character-set-for-jsfs-hinputtext-on-first-submit-only) – Chase