<var id="k6qs5"><sup id="k6qs5"></sup></var>

  • 請叫我小C的gravatar頭像
    請叫我小C 2023-09-14 13:56:13
    deepoove-poi開啟springel表達式中文標簽無法識別解決方案

    在使用deepoove-poi動態渲染的時候是否遇到這樣的問題?如果有,本篇文章教你怎么解決。本文章以時間轉換講解。

    動態渲染的表達式為:{{注冊讓日期}},{{密碼更改日期}},{{入團時間}},{{入檔時間}}

    deepoove-poi開啟springel表達式中文標簽無法識別解決方案

    1. 首先我們查看deepoove-poi的幫助文檔,里面描述可以自定義插件,我們實現接口RenderPolicy實現render方法,代碼如下
      public class DateTimeRenderPolicy implements RenderPolicy {
          @Override
          public void render(ElementTemplate elementTemplate, Object o, XWPFTemplate xwpfTemplate) {
              XWPFRun run = ((RunTemplate)elementTemplate).getRun();
              Character sign = elementTemplate.getSign();
              String format = DateTypeEnum.toType(sign).getDesc();
              String value = DateUtil.format(DateUtil.parse(o.toString()), format);
              run.setText(value, 0);
          }
      }
    2. 定義時間枚舉
    3. @Getter
      @AllArgsConstructor
      public enum DateTypeEnum {
          F('F', "yyyy-MM-dd HH:mm:ss"),
          Y('Y', "yyyy-MM-dd"),
          M('M', "yyyy-MM"),
          C('C', "yyyy年MM月dd日"),
          D('D', "yyyy年MM月"),
          P('P', "M月dd日"),
          T('T', "yyyy年");
      
          private char value;
          private String desc;
      
          public static DateTypeEnum toType(char value) {
              return Stream.of(DateTypeEnum.values()).filter(p -> p.value == value).findAny().orElse(null);
          }
      }
    4. 如何使用?
    • 在初始化的時候注入標簽,指定我們剛剛新建的處理器
    • 
      
              Configure config = Configure.builder()
                  .addPlugin(DateTypeEnum.F.getValue(), new DateTimeRenderPolicy())
                  .addPlugin(DateTypeEnum.Y.getValue(), new DateTimeRenderPolicy())
                  .addPlugin(DateTypeEnum.M.getValue(), new DateTimeRenderPolicy())
                  .addPlugin(DateTypeEnum.C.getValue(), new DateTimeRenderPolicy())
                  .addPlugin(DateTypeEnum.D.getValue(), new DateTimeRenderPolicy())
                  .addPlugin(DateTypeEnum.P.getValue(), new DateTimeRenderPolicy())
                  .addPlugin(DateTypeEnum.T.getValue(), new DateTimeRenderPolicy())
                  .build();
      XWPFTemplate template = XWPFTemplate.compile(res.bodyStream(), config);
      最終使用標簽即可{{F注冊讓日期}},{{Y密碼更改日期}},{{M入團時間}},{{C入檔時間}}
    • 效果圖1模板deepoove-poi開啟springel表達式中文標簽無法識別解決方案
    • 效果圖2渲染后deepoove-poi開啟springel表達式中文標簽無法識別解決方案

     


    打賞

    已有1人打賞

    最代碼官方的gravatar頭像
    最近瀏覽
    笨小孩一號  LV22 1月23日
    fengzf  LV16 2023年12月7日
    lbszxc  LV2 2023年11月30日
    葉兒飛  LV4 2023年11月29日
    youwuzuichen  LV10 2023年10月9日
    請叫我小C  LV19 2023年10月6日
    最代碼官方  LV167 2023年9月16日
    頂部 客服 微信二維碼 底部
    >掃描二維碼關注最代碼為好友掃描二維碼關注最代碼為好友
    国产 国产 高清|护士奶头又白又大又好摸|中文字幕av一区二区三区|午夜亚洲国产理论片2020
    <var id="k6qs5"><sup id="k6qs5"></sup></var>