我有一个带有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中输入值后直接单击下一个按钮,则不会显示该消息。但是,如果我在输入值后单击另一个单元格,然后单击下一步按钮,则会显示该消息。
似乎这两个问题是相关的,但还没有设法找到解决方案。有人可以帮忙吗?