PrimeFaces 10 inputMask无法添加短于掩码长度的输入求助
解决PrimeFaces 10 inputMask短内容无法添加的问题
针对你遇到的问题,这里提供几个可行的解决思路:
1. 关闭autoClear属性
你当前设置了autoClear="true",这个属性会在输入内容未完全匹配掩码格式时,在组件失去焦点(比如点击添加按钮)时自动清空输入框。即使开启了validateMask="false",这个清空逻辑依然可能触发。将其改为autoClear="false"即可避免这种情况:
<p:inputMask id="teileNummer" value="#{maZusTeilenummerController.teilenummerToAdd}" styleClass="js-teilenummer-inputmask-full js-focused-when-visible-dialog" converter="aeko.TeileNummerFullConverter" autoClear="false" mask="***-***-***-**-***" validateMask="false"> </p:inputMask>
2. 检查自定义转换器的逻辑
你的TeileNummerFullConverter可能在处理短内容时返回了null,导致后台接收不到有效值。可以先临时注释掉converter属性测试,如果能正常添加短内容,说明转换器需要调整,确保它能正确处理未填满掩码的输入值。
3. 调整commandButton的参数传递方式
当前你在action中直接传递teilenummerToAdd作为参数,这个值的读取时机可能早于输入框值的更新(点击按钮时,input的新值还没同步到bean)。改为直接在方法中读取bean的属性:
修改XHTML的commandButton:
<p:commandButton id="addButton" styleClass="button-right" action="#{maZusTeilenummerController.addPosition(maPosController.filter.maNr, maPosController.filter.maPosNr)}" value="#{labels['button.hinzufuegen']}" style="width:125px;" ajax="true" oncomplete="setPopupSize(); clearTeilenummerField(); " update="zusTeilenummerMessages :zusTeilenummerForm:zusTeilenummerContent" />
修改Java控制器代码:
public void addPosition(StringValueTO maNr, StringValueTO maPosNr) { String teilenummerToAdd = this.teilenummerToAdd; teilenummerToAdd = (StringUtils.stripEnd(teilenummerToAdd, null)).toUpperCase(); if(StringUtils.isNotBlank(teilenummerToAdd)){ teilenummerList.add(teilenummerToAdd); this.teilenummerToAdd = ""; } }
4. 排查keyFilter与inputMask的冲突
p:keyFilter和p:inputMask同时作用于输入框,可能导致值同步异常。可以先移除p:keyFilter测试,如果问题解决,再考虑用inputMask内置的过滤规则替代,或者调整keyFilter的配置。
内容的提问来源于stack exchange,提问作者user13840927
相关产品推荐
相关产品推荐

