ICEfaces 和 Google Translate -4 步骤 2. 创建 backing JavaBean
 
- UID
- 1066743
|

ICEfaces 和 Google Translate -4 步骤 2. 创建 backing JavaBean
步骤 2. 创建 backing JavaBean (GoogleTranslate.java)com.ibm.translate.GoogleTranslate 类是 main.jspx 页面的 backing bean。该 bean 存储选择的当前状态以及所有的 Google Translate 信息。
清单 3 显示了 GoogleTranslate.java 类的代码。
清单 3. GoogleTranslate.java1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
| public class GoogleTranslate {
private Hashtable languages = new Hashtable();
private Hashtable langLabels = new Hashtable();
private Effect textEffect;
protected SelectItem[] ORIGINAL_LANGUAGES;
protected SelectItem[] TRANSLATION_LANGUAGES;
public void updateText(ActionEvent event) throws
Exception{
if(this.getText().length() > 1 ){
this.setOutputText(translate(getText()));
}
}
public void resetAll(ActionEvent event){
this.setText("");
this.setOutputText("");
}
public String translate(String input) throws Exception{
String out = "";
if(input != null){
out = Translate.translate(this.getText(),
getSelectedOriginalLanguage(),
getSelectedTranslatedLanguage());
invokeTextEffect();
}
return out;
}
public SelectItem[] getORIGINAL_LANGUAGES() {
if(ORIGINAL_LANGUAGES == null){
this.setLanguages();
this.setLangLabels();
Enumeration en = this.languages.keys();
Enumeration enLbls = this.langLabels.keys();
ORIGINAL_LANGUAGES = new
SelectItem[languages.size()];
for (int i = 0; i < languages.size(); i++) {
ORIGINAL_LANGUAGES = new SelectItem(
(String)this.langLabels.get(enLbls.nextElement()),
(String) this.languages.get(en.nextElement()));
}
}
return ORIGINAL_LANGUAGES;
}
public SelectItem[] getTRANSLATION_LANGUAGES() {
if(TRANSLATION_LANGUAGES == null){
this.setLanguages();
this.setLangLabels();
Enumeration en = this.languages.keys();
Enumeration enLbls = this.langLabels.keys();
TRANSLATION_LANGUAGES = new
SelectItem[languages.size()];
for (int i = 0; i < languages.size(); i++) {
TRANSLATION_LANGUAGES = new SelectItem(
(String) this.langLabels.get(enLbls.nextElement()),
(String) this.languages.get(en.nextElement()));
}
}
return TRANSLATION_LANGUAGES;
}
public void setLanguages() {
this.languages.put(Language.ARABIC, "ARABIC");
this.languages.put(Language.CHINESE_SIMPLIFIED,
"CHINESE_SIMPLIFIED");
this.languages.put(Language.CHINESE_TRADITIONAL,
"CHINESE_TRADITIONAL");
this.languages.put(Language.DUTCH, "DUTCH");
this.languages.put(Language.ENGLISH, "ENGLISH");
this.languages.put(Language.FRENCH, "FRENCH");
this.languages.put(Language.GERMAN, "GERMAN");
this.languages.put(Language.GREEK, "GREEK");
this.languages.put(Language.ITALIAN, "ITALIAN");
this.languages.put(Language.JAPANESE, "JAPANESE");
this.languages.put(Language.KOREAN, "KOREAN");
this.languages.put(Language.PORTUGESE, "PORTUGESE");
this.languages.put(Language.RUSSIAN, "RUSSIAN");
this.languages.put(Language.SPANISH, "SPANISH");
}
public void setLangLabels() {
this.langLabels.put(new Integer(0),
Language.PORTUGESE);
this.langLabels.put(new Integer(1),Language.KOREAN);
this.langLabels.put(new Integer(2),
Language.JAPANESE);
this.langLabels.put(new Integer(3), Language.SPANISH);
this.langLabels.put(new Integer(4), Language.GERMAN);
this.langLabels.put(new Integer(5), Language.FRENCH);
this.langLabels.put(new Integer(6), Language.ITALIAN);
this.langLabels.put(new Integer(7),
Language.CHINESE_SIMPLIFIED);
this.langLabels.put(new Integer(8), Language.ARABIC);
this.langLabels.put(new Integer(9), Language.RUSSIAN);
this.langLabels.put(new Integer(10),Language.GREEK);
this.langLabels.put(new Integer(11),
Language.ENGLISH);
this.langLabels.put(new Integer(12), Language.DUTCH);
this.langLabels.put(new Integer(13),
Language.CHINESE_TRADITIONAL);
}
}
}
|
您可以下载 GoolgeTranslate 示例的完整代码(参见 )。
现在,我们将分析上述代码。
在 backing bean 的开始部分,您定义了两个 SelectItem 数组。
SelectItem 表示与 UISelectMany 或 UISelectOne 组件相关的受支持项目列表中的单一项目。在本例中,它是一个 ice:selectOneMenu 组件。您需要注意这个类中的两个方法。第一个方法是 setLabel(String label),它用于将此项目的标签设置为对于用户可见。第二个方法是 setValue(Object value),它用于在用户选择某个项目时设置传递给模型的项目的值。
对于 GoogleTranslate 类的各个成员,您需要分别生成它们的 getters 和 setters。Eclipse 提供了一个函数来完成此任务。选择字段、类型或类型中的文本,并使用 Source 菜单或 Context 菜单中的 “Generate Getters and Setters” 功能打开相应窗口。“Generate Getters and Setters” 窗口将显示所选类型的所有字段的 getters 和 setters。这些方法将根据类型的字段进行分组。getter 和 setter 方法的名称源于字段名称。当您按下 OK 时,系统将创建所有选中的 getters 和 setters。
在示例代码中,我创建了两个散列表。如前所述,selectOneMenu 组件使用了一个 SelectItem 数组,语言散列表利用该数组设置 ORIGINAL_LANGUAGES 或者 TRANSLATION_LANGUAGES 的值。
langLabels 散列表用于设置 SelectItem 数组的标签。
用户选择某种语言时,相应参数将传递给 Google API 的 translate 函数。
注意:还可以采用另一种方法。除了使用两个散列表,我还可以使用一个包含键和值的字典,并将其存储为 String[]。为此,我需要自己实现这个数据结构。
此处的示例将使用 Highlight 效果,当某些信息更改或提交后便会启用。我将高亮显示 inputText 的 backing bean 值。inputText 组件中提交的文本将高亮显示在一个窗格中。 |
|
|
|
|
|