<p:spinner> 获得错误验证表单后,最大值将不再更改为其他值



所以,它工作正常,直到它得到错误需要的形式验证。 myMaxDuration 在 xhtml 中不会再更改,但是当我在控制台中对其进行系统化时,它发生了变化。

如果,我发送到bean的myMaxDuration是30,Ajax工作正常。 但是,如果我发送到bean时的myMaxDuration是10,ajax将不起作用。

已经尝试在 Bean 中使用 Ajax 更新

<p:panelGrid columns="1" columnClasses="ui-grid-col-6" layout="grid" styleClass="ui-panelgrid-blank">
<p:outputLabel value="Name"/>
<p:inputText value="#{myBean.nEmp.name}" required="true"/>
<p:outputLabel value="Status" styleClass="labelSmall"/>
<p:selectOneMenu required="true" value="#{myBean.nEmp.employmentStatusID}" 
<f:selectItem itemValue="10" itemLabel="10"/>
<f:selectItem itemValue="20" itemLabel="20"/>
<f:selectItem itemValue="30" itemLabel="30"/>
<p:ajax listener="#{myBean.maxDuration()}" update=":form:durasiID"></p:ajax>
</p:selectOneMenu>
</p:panelGrid>
<p:outputPanel>
<p:panelGrid columns="1" columnClasses="ui-grid-col-3" layout="grid" styleClass="ui-panelgrid-blank" rendered="#{myBean.nEmp.employmentStatusID != 6}">
<p:outputLabel value="Durasi" styleClass="labelSmall"/>
<p:spinner min="1" max="#{myBean.myMaxDuration}" id="durasiID" value="{myBean.nEmp.monthDuration}"/>
</p:panelGrid>
</p:outputPanel>
<p:commandButton value="save" action="#{myBean.saveNewDecreeEmployee()}" />

在我的豆子上

public void maxDuration() {
if(nEmp.getEmploymentStatusID() == 10) {
myMaxDuration = 10;
}
else if(nEmp.getEmploymentStatusID() == 20) {
myMaxDuration = 20;
}
else {
myMaxDuration = 30;
}
nEmp.setMonthDuration(myMaxDuration);
System.out.println(myMaxDuration + " - maxDuration");
}

在有人获得错误表单验证字段名称后,应该像在控制台中一样更改 XHTML 中的值。

所以,我通过参考@Kukeltje解决了这个问题

基于此,在发生验证错误后,如何使用PrimeFaces AJAX填充文本字段?

我只是将resetValues="true"添加到我的<p:ajax>

而且效果很好。

最新更新