在primefaces按钮动作中显示消息

时间:2018-02-02 10:49:25

标签: jsf primefaces

我有一个带有2个文本列和一个按钮的数据表:

<p:dataTable var="car" value="#{myClass.cars}" editable="true" editMode="cell"
    <p:column headerText="Column1">
        <p:cellEditor>
            <f:facet name="output"><h:outputText value="#{car.col1}" /></f:facet>
            <f:facet name="input">
                <h:inputText value="#{car.col1}" >
                    <p:ajax event="blur" />
                </h:inputText>    
            </f:facet>
        </p:cellEditor>
    </p:column>

    <p:column headerText="Column2">
        <p:cellEditor>
            <f:facet name="output"><h:outputText value="#{car.col2}" /></f:facet>
            <f:facet name="input">
                <h:inputText value="#{car.col2}" >
                   <p:ajax event="blur" />
                </h:inputText>    
            </f:facet>
        </p:cellEditor>
    </p:column>
</p:dataTable>

<p:messages for="messages4" id="messages" showDetail="true" autoUpdate="true" closable="true" />

<p:commandButton value="Next" action="#{myClass.nextAction}" />

public void nextAction() {
    if (car.col1 or car.col2 not valid) {
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                            "Invalid summary", "Invalid message");                          
        FacesContext.getCurrentInstance().addMessage("messages4", msg);
// Also tried same problem with FacesContext.getCurrentInstance().addMessage(null, msg);
    }
}

我有两个问题:

(1)如果我在column1或column2中输入一个值,然后在点击&#34; Next&#34;之后直接输入。按钮然后在nextAction()中查询时未设置该值。如果我在输入值后单击另一个单元格然后单击下一步按钮,则设置该值。我通过添加虚拟ajax模糊事件来修复此问题。

(2)我想在nextAction()中使用FacesMessage显示消息(信息,警告或错误)。问题是,如果在column1或column2中输入值后直接单击下一个按钮,则不会显示该消息。但是,如果我在输入值后单击另一个单元格,然后单击下一步按钮,则会显示该消息。

似乎这两个问题是相关的,但还没有设法找到解决方案。有人可以帮忙吗?

0 个答案:

没有答案