首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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.java
1
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 组件中提交的文本将高亮显示在一个窗格中。
返回列表