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

PrimeFaces输入框改造需求:拆分单掩码输入为三框并合并存储

解决PrimeFaces输入框拆分与合并保存的问题

要把单个9.9.999掩码的<p:inputMask>拆分为三个独立输入框,并在保存时合并成X.X.XXX格式存储,需要前端页面配合后端Bean处理,具体实现如下:

1. 后端Bean(SystemConfigView)新增临时属性与逻辑

在你的SystemConfigView类中添加三个临时属性绑定拆分后的输入框,同时实现初始化拆分已有版本号和保存时合并版本号的逻辑:

import javax.annotation.PostConstruct;

public class SystemConfigView {
    // 原有属性:假设forceupgradeVersion是封装了value的实体类
    private ConfigItem forceupgradeVersion;

    // 新增临时属性,绑定三个拆分输入框
    private String val1;
    private String val2;
    private String val3;

    // 页面初始化时拆分已有版本号,实现回显
    @PostConstruct
    public void initVersionSplit() {
        if (forceupgradeVersion != null && forceupgradeVersion.getValue() != null) {
            String version = forceupgradeVersion.getValue();
            String[] versionParts = version.split("\\.");
            // 校验格式合法性,避免拆分出错
            if (versionParts.length == 3) {
                val1 = versionParts[0];
                val2 = versionParts[1];
                val3 = versionParts[2];
            }
        }
    }

    // 保存时合并三个输入框的值
    public void saveForceUpgradeVersion() {
        // 校验输入格式(可选,确保符合1位、1位、3位数字的要求)
        if (val1 != null && val2 != null && val3 != null
            && val1.length() == 1 && val2.length() == 1 && val3.length() == 3) {
            String mergedVersion = val1 + "." + val2 + "." + val3;
            forceupgradeVersion.setValue(mergedVersion);
            // 此处调用你的持久化逻辑,比如保存到数据库
        }
    }

    // 以下是getter/setter方法
    public ConfigItem getForceupgradeVersion() { return forceupgradeVersion; }
    public void setForceupgradeVersion(ConfigItem forceupgradeVersion) { this.forceupgradeVersion = forceupgradeVersion; }
    public String getVal1() { return val1; }
    public void setVal1(String val1) { this.val1 = val1; }
    public String getVal2() { return val2; }
    public void setVal2(String val2) { this.val2 = val2; }
    public String getVal3() { return val3; }
    public void setVal3(String val3) { this.val3 = val3; }
}

2. 前端页面调整

替换原有单个输入框为三个独立的<p:inputMask>,绑定到后端新增的临时属性,并添加保存按钮触发合并逻辑:

<p:outputLabel value="Force Upgrade Version: " />
<!-- 拆分后的三个输入框,掩码分别限制输入长度 -->
<p:inputMask id="val1" value="#{systemConfigView.val1}" styleClass="input-mid" mask="9" maxlength="1" />
<span>.</span>
<p:inputMask id="val2" value="#{systemConfigView.val2}" styleClass="input-mid" mask="9" maxlength="1" />
<span>.</span>
<p:inputMask id="val3" value="#{systemConfigView.val3}" styleClass="input-mid" mask="999" maxlength="3" />

<!-- 保存按钮,调用后端合并逻辑并更新表单 -->
<p:commandButton value="Save" action="#{systemConfigView.saveForceUpgradeVersion}" update="@form" />

关键细节说明

  • 掩码与长度控制:每个输入框的mask确保只能输入数字,maxlength限制输入位数,避免不符合要求的内容。
  • 初始化回显:通过@PostConstruct注解的方法,在页面加载时自动拆分已有版本号,填充到对应输入框。
  • 保存校验:合并前校验输入的合法性,避免生成格式错误的版本字符串。

内容的提问来源于stack exchange,提问作者A.R. Faustine Tangente

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:47:29