2

我在选项卡组件中有一些 Primefaces 输入组件,它们从 Java bean 类中获取它们的数据。他们完美地工作。问题是肯定有问题,因为如果我切换到另一个选项卡并马上回来,组件就会变成红色。虽然它们仍然有效,但这可能与我在应用程序中遇到的另一个问题有关。我怎样才能看到这个红色是什么意思?控制台上不显示任何消息。有没有我没有收到的消息?

编辑:添加截图和代码

红色组件

我的代码:

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>

爪哇豆:

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");
    }

}
4

1 回答 1

2

我找到了。我不得不在某处放置一个 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>

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

错误信息

看来我缺少一个转换器。

于 2013-09-20T14:19:43.887 回答