1

1 つのフィールドに Validator を使用している多言語 Web サイトを作成しています。

検証後、応答を受け取りerr002, err003、このエラーに基づいて、それぞれのエラーをメッセージ形式で表示します。というわけで、以下のようなものを予定していました。

私が持っているのは<h:message for="password">

私がやりたかったことは以下の通りです。

if (message is err002) {
    show message of err002 from the properties file.
    #{msg['err002']}
}
if (message is err003) {
    show message of err003 from the properties file.
    #{msg['err003']}
}

これを行う方法はありますか?

実際にやりたいことは、両方の言語でエラー メッセージを表示することです。私が持っているのはセッション Bean の言語コードですが、バリデーターで言語コードを確認できません。

これを行う方法についてのアイデア/提案は素晴らしいでしょう。


編集 1

顔-config.xml

<application>
    <locale-config>
        <default-locale>zh_CN</default-locale>
    </locale-config>
    <resource-bundle>
        <base-name>resources.welcome</base-name>
        <var>msg</var>
    </resource-bundle>
</application>

LanguageBean.java

@ManagedBean(name = "language")
@SessionScoped
public class LanguageBean implements Serializable {

私が持っているプロパティファイルは

welcome.propertiesおよびwelcome_zh_CN.properties

4

1 に答える 1

3

バリデーターメソッドで簡単に達成できます。のように使う

@FacesValidator("passwordValidator")
public class PasswordValidator implements Validator {

    String err1, err2, err3;

    public PasswordValidator() {
        ResourceBundle bundle = ResourceBundle.getBundle("msg", FacesContext.getCurrentInstance().getViewRoot().getLocale());
        err1 = bundle.getString("err1");
        err2 = bundle.getString("err2");
        err3 = bundle.getString("err3");
    }

    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        String pass = (String) value;
        FacesMessage msg;
        if(/*some condition*/) {
            msg = new FacesMessage(err1);
        } else if(/*other condition*/) {
            msg = new FacesMessage(err2);
        } else {
            msg = new FacesMessage(err3);
        }
        if(msg != null) {
            throw new ValidatorException(msg);
        }
    }    
}

そして、それを考慮して使用してください

<h:inputText id="password" validator="passwordValidator" .../>
<h:message for=password .../>
于 2013-02-16T11:28:01.740 に答える