如何根据条件显示h:消息



我正在制作多语言网站,在那里我使用一个字段的Validator。

验证后,我收到的响应为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_zh_CN.properties

您可以在验证器方法中轻松实现它。像一样使用它

@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 .../>

相关内容

  • 没有找到相关文章

最新更新