我写了一个解析器,它可以将平假名文本解析为罗马字文本。然后我做了一个你可以在 Picture1 上看到的 facelet。如果我输入任何平假名文本并单击翻译按钮,它会在两个文本区域中显示垃圾文本。解析器库有单元测试,所有测试都通过。我还使用相同的库制作了一个小型 JavaFX GUI,并且该错误不存在。此错误仅在我部署它并在浏览器中运行后出现。我使用 JSF 2.2 和 Glassfish 4.1.0 作为容器。
图1: 当我在显示这个垃圾后重新输入相同的文本时,它运行良好。它在任何其他时间都可以正常工作。你可以在图片2上看到它。我输入了相同的文本,并且在最初的错误之后效果很好。
这是 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 的新手,我不知道为什么会发生这个错误。先感谢您!