You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:52:42