Jsf 请参阅Primefaces红色组件中的错误

Jsf 请参阅Primefaces红色组件中的错误,jsf,primefaces,error-handling,messages,Jsf,Primefaces,Error Handling,Messages,我在选项卡组件中有一些Primefaces输入组件,它们从JavaBean类获取数据。它们工作得很好。问题是一定是出了什么问题,因为如果我切换到另一个选项卡并直接返回,组件将变为红色。尽管它们仍然有效,但这可能与我的应用程序中的另一个问题有关。我怎么知道这个红色是什么意思?控制台上不显示任何消息。有什么我没有收到的信息吗 编辑:添加屏幕截图和代码 我的代码: XHTML: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/

我在选项卡组件中有一些Primefaces输入组件,它们从JavaBean类获取数据。它们工作得很好。问题是一定是出了什么问题,因为如果我切换到另一个选项卡并直接返回,组件将变为红色。尽管它们仍然有效,但这可能与我的应用程序中的另一个问题有关。我怎么知道这个红色是什么意思?控制台上不显示任何消息。有什么我没有收到的信息吗

编辑:添加屏幕截图和代码

我的代码:

XHTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">
<h:body>
    <ui:composition>
        <h:form>
            <p:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">
                <h:outputText value="Item: "/>
                <p:selectOneMenu value="#{devTestController.items}">  
                    <f:selectItems value="#{devTestController.items}" var="item" itemLabel="#{item.label}" itemValue="#{item.value}"/>  
                </p:selectOneMenu>
            </p:panelGrid>
            <p:commandButton value="asdf1" action="#{devTestController.doAction()}"/>   
        </h:form>
    </ui:composition>
</h:body>
</html>

Java bean:

import java.util.LinkedList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class DevTestController
{
    private List<Parameter> items;

    @PostConstruct
    public void initList()
    {
        items = new LinkedList<>();
        items.add(new Parameter("Item1", "Item1"));
        items.add(new Parameter("Item2", "Item2"));
        items.add(new Parameter("Item3", "Item3"));
    }

    public List<Parameter> getItems()
    {
        return items;
    }

    public void doAction()
    {
        System.out.println("asdf");
    }

}
import java.util.LinkedList;
导入java.util.List;
导入javax.annotation.PostConstruct;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.RequestScope;
@ManagedBean
@请求范围
公共类DevTestController
{
私人清单项目;
@施工后
public void initList()
{
items=newlinkedlist();
添加(新参数(“Item1”、“Item1”);
添加(新参数(“Item2”、“Item2”);
添加(新参数(“项目3”、“项目3”);
}
公共列表getItems()
{
退货项目;
}
公共无效行为()
{
系统输出打印项次(“asdf”);
}
}

我找到了。我必须在某个地方放置一个h:messages标签,并使用按钮进行更新。 现在我的XHTML表单:

<h:form>
    <h:messages id="errorMessages" style="color:red;margin:8px;" />
    <br></br>
    <p:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">
        <h:outputText value="Item: "/>
        <p:selectOneMenu value="#{devTestController.items}">  
            <f:selectItems value="#{devTestController.items}" var="item" itemLabel="#{item.label}" itemValue="#{item.value}"/>  
        </p:selectOneMenu>
    </p:panelGrid>
    <p:commandButton value="asdf1" update = "errorMessages" action="#{devTestController.doAction()}"/>  
</h:form>



现在,当我按下按钮时,我收到消息:


似乎我缺少一个转换器。

是否将消息捕获到消息组件中?即使您是,如果您还有一个不更新消息的
update=
参数,那么您将看不到错误消息。您可以提供此页面的代码吗?我尝试使用h:messages获取消息,但它不起作用。我应该把更新放在哪里?