Jsf 如何在p:messages组件中显示字符串数组中的值

Jsf 如何在p:messages组件中显示字符串数组中的值,jsf,primefaces,Jsf,Primefaces,我需要您的帮助来显示字符串数组中的值,并在jsf页面的Messages组件中显示它们 在代码中,我有一个字符串[],其中包含以下条目: String[] messages = new String[] { "Record No.1 Fail", "Record No.2 Fail", "Record No.3 Success" }; 现在,我需要您的帮助来显示字符串数组中的失败记录,该字符串数组在messages组件中被称为数据,代码如下: FacesContext.g

我需要您的帮助来显示字符串数组中的值,并在jsf页面的Messages组件中显示它们

在代码中,我有一个字符串[],其中包含以下条目:

String[] messages = new String[] {
    "Record No.1 Fail",
    "Record No.2 Fail",
    "Record No.3 Success"
};
现在,我需要您的帮助来显示字符串数组中的失败记录,该字符串数组在messages组件中被称为数据,代码如下:

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Record No.1 Fail", ""));
 // values from String Array should be passed
jsf页面有:

<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
一个组件将处理多条消息。只需确保在xhtml页面中放置了一个,该页面将在操作完成后呈现或更新

因此,在您的支持bean中,您应该只遍历messages[]并添加faces消息,就像@BalusC建议的那样

        String[] messages = new String[] {
                "Record No.1 Fail",
                "Record No.2 Fail",
                "Record No.3 Success"
        };
        for(int i = 0 ; i < messages.length; i++){
            String msg = messages[i];
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null));
        }
结果如下所示:


顺便说一下,您没有使用“详细信息”选项,因此应该使用showdeail=false

您的问题是具体的。要解决问题,首先要简化事情,更一般地思考。。。您似乎想要的是“格式化”文本。正如您可能理解的,数组的“toString”是基本的,并且很可能没有按照您想要的方式进行格式化。所以你需要自己做一些基本的“格式化”,永远。然后,您的问题是“如何在p:messages中传递/显示格式化文本?”。在上面的代码中,DB访问是完全不相关的。静态数组也会有同样的问题。因此,它与java或数组无关,因此这些标记是错误的?