当前位置: 首页 > 知识库问答 >
问题:

这个UI代码的helper方法是什么样子的?

南宫书
2023-03-14

我想重构一些UI代码。

我有一个HTML表单(这里:用一个叫做Wicket的Java GUI编写),在那里我放了一些链接(锚标签)。不是一遍又一遍地重复代码,我想创建一个新的优雅的helper方法。

String type = "", id = ""; 
Form form, Service service;

form.add(new Widget("createLink", form) { // the same for read, update, delete
    private static final long serialVersionUID = 1L;
    @Override
    public void onSubmit() {
        try {
            service.create(type, id);  // the same for service.read / update / delete
            info("Specific message for create, read, update, delete");
        } catch (DataAccessException e) {
            error(ExceptionUtils.getRootCauseMessage(e));
        }
    }
});
form.add(new Widget("readLink", form) {
    // ... service.read(...); info("... read ...");
});
form.add(new Widget("updateLink", form) {
    // ... service.update(...); info("... update ...");
});

你已经猜到了,我想要某物。就像

form.add(createLink(htmlId, form, type, id, message, ?));

我想避免为此创建一个额外的类。但兰姆达斯就行了。

最好的方法是什么?而这个模式是怎么叫的呢?

多谢了。

共有1个答案

晋西岭
2023-03-14

对于您可以使用java.util.function.consumer:

private void createLink(String htmlId, Form<?> form, String type, String id, String feedbackMessage, Runnable _onSubmit) {
    return new Widget(htmlId, form) {
      private static final long serialVersionUID = 1L;

      @Override
      public void onSubmit() {
        try {
          _onSubmit();
          info(feedbackMessage);
        } catch (DataAccessException e) {
          error(ExceptionUtils.getRootCauseMessage(e));
        }
      }
    }
}

用法:

form.add(createLink("createLink", form, type, id, createMessage, () -> {
  service.create(type, id);
}));
 类似资料:
  • 我想知道为什么下面的代码: 我被要求详细解释,但我不明白为什么输出是这样的。请有人帮帮我。

  • 基本上,我需要拿出一个伪代码。我现在拥有的是 dictionary={} if节点。左==无和节点。右==无 访问(节点) 字典[节点]=1 这只是叶节点,如何获取每个节点(父节点和根节点)的大小?

  • 问题内容: 我碰到了Java行,并对它的输出感到困惑。您能否解释一下此代码背后的逻辑 输出: 问题答案: 好吧,它等效于: 真正地将原始内容显式转换为只是使其调用而不是。 我相信to 转换 实际上首先 要进行隐式加宽转换-就像这样: 这些帮助有用?

  • 我正在看宣传单。 在setTimeout中调用

  • 我必须在此处显示tableView中的所有数据,但其他细节不适合设备的大小。 正如您所看到的,除了“项目详细信息”之外,这些信息是可读的。但是客户给我说,“项目细节”可能比设备屏幕(iPhone o iPad||横向或纵向)更长。 如果项目详细信息的字符串比设备屏幕长,那么显示这些信息的最佳方法是什么?

  • 为什么jaxb在下面生成一个名为的类型参数? 这个文件是由JavaTM体系结构用于XML绑定(JAXB)参考实现生成的: 也许这是一个我不知道的设计模式?