2017-08-06 5 views
0

ひらがなのテキストをローマ字のテキストに変換できるパーサーを作成しました。 次に、私はあなたがPicture1で見ることができるfaceletを作った。ひらがなのテキストを入力して翻訳ボタンをクリックすると、両方のテキストエリアにガベージテキストが表示されます。パーサライブラリには単体テストがあり、すべてのテストがパスされます。 同じlibを使って小さなJavaFX GUIを作成しましたが、そのバグは存在しません。このバグは、デプロイしてブラウザで実行した後にのみ表示されます。 JSF 2.2とGlassfish 4.1.0をコンテナとして使用しています。JSFの入力フィールドは、デプロイ後最初のリクエストでmojibakeを表示してからうまく動作します。


Picture1の: Image1 このゴミが示された後、私は同じテキストを再入力し、それがうまく動作します。 それは他の時代と同じように動作します。 Picture2で見ることができます。私は非常に同じテキストを入力し、最初のバグの後でうまく動作します。


写真2:ここでは Image2


はいる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> 

そしてここでは、管理対象Beanのコードです。 HiraganaLettersNewクラスはシングルトンです。

@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); 
    } 
} 

誰かが私を助けていただけますか?私はfaceletsとJavaEEを初めて使っています。なぜこのバグが起こっているのかわかりません。前もって感謝します!

+0

の可能性のある重複した[JSFの時間を設定し、間違った文字:のinputTextが最初に提出する(のみ)](https://stackoverflow.com/questions/ 9647380/jsfs-hinputtext-on-first-submit-onlyの間違った文字セット) – Chase

答えて

0

解決策が見つかりました。

このソリューションはglassfishで動作します。 この構造でglassfish-web.xmlファイルを作成しなければなりませんでした。それはメイプルプロジェクトです。

{projectRoot}/src/main/webapp/WEB-INF/glassfish-web.xml 

ファイルには、このコードを含んでいます

<?xml version="1.0" encoding="UTF-8"?> 


<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD 
GlassFish Application Server 3.1 Servlet 3.0//EN" 
"http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app> 
    <locale-charset-info> 
     <parameter-encoding default-charset="UTF-8" /> 
    </locale-charset-info> 
</glassfish-web-app> 

きれい展開した後に、バグがなくなっています。 この質問は重複していますが、私が尋ねたときにはわかりませんでした。


も参照してください: It has been asked here before.

BalusC's blog

関連する問題