Skip to content
网游世界
网游世界

吾生有涯,而知无涯。

  • 首页
  • PHP
    • ThinkPHP
    • FastAdmin
    • webman
  • JavaScript
    • jQuery
    • AdminLTE
  • Free Pascal
  • Java
    • JeeSite
    • 若依
    • ruoyi-vue-pro
  • 其它
    • 操作系统
    • 树莓派
    • 前端
    • Null
  • 关于
网游世界

吾生有涯,而知无涯。

JeeSite 正则替换 HTML 单元格

3Vshej, 2024年1月4日 周四2024年1月4日 周四

在开发中遇到一个问题,需要将表单填写的内容,同步到 HTML 表格中。因为源表格很复杂,最终使用的方案是,部分字段表单页面中填写,而后同步到 HTML中,再存储数据库。

/**
 * 解析模板
 *
 * @param map HashMap 键值
 * @param tpl String 模板
 * @return String
 */
public String parseTpl(HashMap<String, String> map, String tpl) {
    String regex = "";
    String value = "";
    for (String key : map.keySet()) {
        value = map.get(key);
        regex = "(<td[^>]*id=\"" + key + "\"[^>]*>)(.*?)(</td>)";

        Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
        Matcher matcher = pattern.matcher(tpl);
        tpl = matcher.replaceAll("$1" + value + "$3");
    }
    return tpl + "<br />";
}

/**
 * 保存数据(插入或更新)
 *
 * @param productCustomerComplaints ProductCustomerComplaints
 */
@Override
@Transactional
public void save(ProductCustomerComplaints productCustomerComplaints) {

    HashMap<String, String> map = new HashMap<>();
    map.put("workOrderCode", productCustomerComplaints.getWorkOrder().getOrderNum());
    map.put("customerName", productCustomerComplaints.getCustomer().getCustomerName());
    map.put("customerProductCode", productCustomerComplaints.getCustomerProductCode());
    map.put("proCode", productCustomerComplaints.getProCatalog().getProCode());
    map.put("proName", productCustomerComplaints.getProCatalog().getProName());
    map.put("supplierName", productCustomerComplaints.getSupplierName());
    map.put("badNumber", productCustomerComplaints.getBadNumber());

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String formattedDate = sdf.format(productCustomerComplaints.getSubmitDate());
    map.put("submitDate", formattedDate);

    productCustomerComplaints.setEightDisciplineReport(parseTpl(
            map,
            productCustomerComplaints.getEightDisciplineReport()
    ));

    super.save(productCustomerComplaints);
}

示例 HTML 模板:

<td width="141" valign="middle" style="word-break: break-all;" align="center"><p><span style="font-size: 16px;">主题</span></p>
<p><span style="font-size: 14px;">&nbsp;(Subject)</span></p></td>
<td valign="middle" align="center" style="word-break: break-all;" rowspan="1" colspan="3" id="workOrderCode"><br/></td>

步骤:

  1. 模板中 td 单格中定义好 id
  2. 获取表单中字段值,并放入 HashMap 中
  3. 正则匹配 HTML 中 td 项,并将内容替换为实际值
  4. 返回替换结果并存储

相关文章:

  1. JeeSite 列表中添加子列表 在 JeeSite 列表中,在业务中有需要查看子表数据。具体方法为:...
  2. JeeSite 表中新增字段 在后期维护项目时,因业务要求需要向表中新加字段,以适应新业务。但重新生成代码又不适用,这时候需要手动......
  3. JeeSite 公共样式、JS 文件 公共 CSS 文件(编写样式以应用到全局): web/src/main/resources/stat......
  4. JeeSite 验证数据唯一 在日常开发中,最常用的是数据唯一验证;如客户名称不能重复。因为,自己水平有限,在 JeeSite 中......
Java JeeSite JeeSite 框架正则表格

文章导航

Previous post
Next post

近期文章

  • Android Studio Gradle 配置国内镜像
  • 为什么重新发明轮子
  • ruoyi-vue-pro 匿名访问
  • VUE 中接收 code 异常
  • 关于 AI

归档

  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
除非特殊说明,本站作品采用知识共享署名 4.0 国际许可协议进行许可。
豫公网安备 41010402002622号 豫ICP备2020029609号-3
©2025 3Vshej