当前位置: 首页 > 面试题库 >

如何有效使用绑定框架

徐鸿达
2023-03-14
问题内容

我使用绑定框架已有一段时间了,我想知道您如何处理这种情况。

您的报纸有一些属性,例如

  • (字符串)标题
  • (布尔值)已发布
  • (日期)发布日期

在您看来,您拥有一份报纸列表,可以同时对其进行全部编辑。这意味着您可以在单个请求中更改所有newspape的标题或“已发布”的所有状态。

问题在于,当我们使用绑定框架时,​​您将有点像编辑数据库中的数据一样编辑报纸的数据…将每个值彼此独立地绑定到字段。

但是…我想做的是,当我发布报纸时,publishmentDate会更新为当前日期。我可以肯定地在表单上放置一个publishmentDate字段,甚至将一个隐藏的字段设置为当前日期……但这既不干净也不安全

我认为最好有一个动作publish(),将标志设置为true,但还要更新publishmentDate(如果需要,还可以更新其他逻辑…)

我只是想知道您如何处理?

我已经看到并考虑了不同的方法

1)有时我们将新参数绑定到现有的持久性ORM实体。
这意味着我们将在绑定之前检索实体,以便将值绑定到现有的“已填充”实体对象。有时这称为“为实体充水”。因此,知道是否必须启动“发布操作”的唯一方法是将旧字段与新字段进行比较,以便知道该字段是否已被编辑以及在哪个方向上被编辑(错误->
true =发布)可以使用ORM侦听器(例如@ PostLoad,Hibernate Interceptor /
EventListener或其他任何东西),以便保留所需的“绑定前”值。

这很好用,但在绑定上已将发布标志设置为true时,在车辆上启动发布操作是相当“怪异”的。

2)可以执行几乎相同的操作,但可以使用另一个标志…例如代表用户希望发布报纸的标志。
因此,您不必与先前的值进行比较,您只需检查用户是否希望发布报纸然后启动该操作即可…(并且这次您启动该操作时,实际发布的标记仍为false。 ..)

问题在于,当您使用绑定框架时,​​希望在视图中选中已发布的报纸的已发布复选框。因此,如果绑定的属性现在为published_wish,则必须将其设置为一个值,否则将始终取消选中所有复选框…这意味着在显示视图之前,您将必须执行诸如published_wish
= Published Most愿望标记将不会被保留的时间,但是我已经看到某些情况下“希望”必须保留,因此无需执行published_wish =
published

3)使用一个空的非持久实体进行绑定,然后将该非持久实体的值重新复制到实际持久对象中。
因此,当您将值从一个对象复制到另一个对象时,您可以启动所需的任何操作,自定义所有内容…但是必须将所有这些参数都复制下来有点麻烦…

可能还有其他方法可以做…

你会怎么做?这样它不仅能很好地工作,而且还 优雅,可维护 …我在这里看不到任何完美的解决方案


问题答案:

我同意您的意见,在这种情况下,我也将使用“发布”按钮(也可能使用“取消发布”按钮),从而允许用户选择多篇文章并将其全部发布。我不允许用户直接编辑“发布”复选框和发布日期。



 类似资料:
  • 问题内容: 我有几个复选框: 我想绑定到控制器中的列表,以便每当更改复选框时,控制器都维护所有检查值的列表,例如。 ng-model似乎只能将一个复选框的值绑定到控制器中的变量。 还有另一种方法可以使四个复选框绑定到控制器中的列表吗? 问题答案: 有两种方法可以解决此问题。使用简单数组或对象数组。每个解决方案都有其优缺点。您会在下面找到每种情况的一种。 用简单的数组作为输入数据 HTML可能如下所

  • 问题内容: 我有大量要搜索的小文件。我一直在寻找一个良好的事实上的多线程版本,但找不到任何东西。如何改善grep的用法?截至目前,我正在这样做: 问题答案: 如果在多核处理器上安装了xargs,则可以从以下内容中受益,以防万一有人感兴趣。 环境: 测试: 1.找到必要的文件,将它们通过管道传递到xargs,并告诉它执行8个实例。 2.找到必要的文件,将它们通过管道传递到xargs,并告诉它执行4个

  • 问题内容: 快速使用以下语法进行流控制 在这种情况下 ,真值上下文的语义是什么 ? 是否允许 表达式链接 (如下所示)? 如果是这样,布尔表达式是否会短路? 问题答案: 首先检查它是否为零或是否有数据。如果为零,则不会执行if语句。如果有数据,则将数据解包并分配给if语句的范围。然后执行括号内的代码。 无法在一个if语句中链接此功能。不直接评估为布尔值。最好将“ if let”视为一个特殊关键字。

  • 问题内容: 我尝试使用docker-py(版本1.3.1)启动Docker容器。我想将容器内部端口映射到其他端口,但无法正确公开它们。 我这样做是这样的: 在当前情况下,输出如下: docker ps告诉我: 但是如果我给它映射3000-> 3000,2424-> 2424和2480-> 2480 关键是从命令行我可以使用正确的端口映射启动容器。那是 docker运行-d -p 3001:3000

  • 我试图遵循官方google文档https://developer.android.com/tools/data-binding/guide.html中的数据绑定示例 只是我试图将数据投标应用于一个片段,而不是一个活动。 我当前在编译时遇到的错误是 我怀疑不知道它应该绑定到哪个布局文件-因此出现错误。有什么建议吗?

  • 问题内容: 我必须处理一个很大的结果集(可能是数十万行,有时更多)。 不幸的是,它们需要一次全部检索(在启动时)。 我正在尝试通过使用尽可能少的内存来做到这一点。 通过查看SO,我发现使用可能是我想要的,但我仍然不太了解如何正确使用它们。 正在做一个从基光标或SScursor相同的(在内存使用的术语)? 我可以一排(或几排)从sscursor的行中“流化” 吗?如果是,这样做的最佳方法是什么? 问