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