春季4.3.2
我需要手动调用SmartValidator.validate(),我需要它使用我在目标实体上定义的验证组.javadoc说这个......
"validate()的这个变体支持验证提示,例如针对JSR-303提供程序的验证组(在这种情况下,提供的提示对象需要是类型为Class的注释参数)."
void validate(Object target,
Errors errors,
Object... validationHints)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我找不到有关使用"validationHints"的更多信息或示例.所以我一直在尝试以下内容......
validator.validate(targetEntity, errors, new Class[]{ValidationGroup1.class});
validator.validate(targetEntity, errors, ValidationGroup1.class);
Run Code Online (Sandbox Code Playgroud)
到目前为止,它完全忽略了我的分组.它总是调用所有验证器.有任何想法吗?
谢谢!
===================================
更新:javadoc也说这个..
"注意:实际目标Validator可能会忽略验证提示,在这种情况下,此方法的行为应与其常规Validator.validate(Object,Errors)兄弟一样."
这听起来像正在发生的事情.但它没有提供任何线索,为什么它可能会忽略它.
我正在将 Python 函数部署为 Google Cloud Function。它在本地测试良好,并毫无怨言地部署到 GCP。然而,当我实际执行它时,它崩溃了......
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
The pandas library is not installed, please install pandas to use the to_dataframe() function.
Run Code Online (Sandbox Code Playgroud)
我的requirements.txt如下(并且已验证它实际上是在部署功能时上传的)...
appdirs==1.4.3
APScheduler==3.6.3
beautifulsoup4==4.8.2
cachetools==4.0.0
certifi==2019.11.28
chardet==3.0.4
click==7.1.1
distlib==0.3.0
filelock==3.0.12
Flask==1.1.1
google-api-core==1.16.0
google-api-python-client==1.8.0
google-auth==1.12.0
google-auth-httplib2==0.0.3
google-cloud-bigquery==1.24.0
google-cloud-core==1.3.0
google-cloud-storage==1.26.0
google-resumable-media==0.5.0
googleapis-common-protos==1.51.0
grpcio==1.27.2
httplib2==0.17.0
idna==2.9
itsdangerous==1.1.0
Jinja2==2.11.1
MarkupSafe==1.1.1
numpy==1.18.2
pandas==1.0.3
pipenv==2018.11.26
protobuf==3.11.3
pyasn1==0.4.8
pyasn1-modules==0.2.8
python-dateutil==2.8.1
pytz==2019.3
requests==2.23.0
rsa==4.0
six==1.14.0
soupsieve==2.0
tzlocal==2.0.0
uritemplate==3.0.1
urllib3==1.25.8
virtualenv==20.0.15
virtualenv-clone==0.5.4
Werkzeug==1.0.1
wget==3.2
Run Code Online (Sandbox Code Playgroud)
以下是云函数日志的更多详细信息...
severity: "ERROR" …Run Code Online (Sandbox Code Playgroud) 我已经在这个小东西上转动了几个小时了。我有一个div。在该div中,我希望右侧(并排)有两个按钮,并且该行的其余部分由输入字段填充。我尝试了无数CSS选项组合,但无法弄清楚。
我需要item1和item2并排并占用父div的整个宽度。CSS专家有什么想法吗?谢谢!!
<div style="width: 50%; border: 1px solid black; height: 300px;">
<br/>
<div style="width: 100%">
<input id="item1" type="text" style="width: 100%"/>
<div id="item2">
<button>button1</button>
<button>button2</button>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 可以说我有一个父组件和一个子组件。父组件由几个子组件组成。父组件保存并管理一个非常复杂且深层的数据对象。每个子组件都提供用于管理各种子对象和主数据对象属性的UI。每当子组件更改数据对象层次结构中的属性值时,该更改就需要冒泡到主数据对象。
这是我可以通过传入回调对象在子组件类中实现的方法...
<div>
<button onClick={e => this.setState({propA: e.target.value}, () => props.onChangePropA(this.state.propA)}>Prop A</button>
<button onClick={e => this.setState({propB: e.target.value}, () => props.onChangePropB(this.state.propB)}>Prop B</button>
</div>
Run Code Online (Sandbox Code Playgroud)
与我认为我需要使用钩子进行比较。我看到的主要问题是状态更改完成后没有回调选项。所以我必须在useEffect中检测到它并找出刚刚更改的属性...
let prevPropA = props.propA;
let prevPropB = props.propB;
const [propA, setPropA] = useState(props.propA);
const [propB, setPropB] = useState(props.propB);
useEffect(() => {
if (prevPropA != propA) props.onChangePropA(propA);
if (prevPropB != propB) props.onChangePropB(propB);
});
<div>
<button onClick={e => {prevPropA = propA; setPropA(e.target.value)}}>Prop A</button>
<button onClick={e => {prevPropB = propB; setPropB(e.target.value)}}>Prop B</button>
</div>
Run Code Online (Sandbox Code Playgroud)
我看到这种方法变得非常麻烦和凌乱。是否有更健壮/正确的方法来完成此任务?
谢谢
================================================== ===========
以下是根据Shubham的回答和Ryan的反馈更新的示例代码。Shubham按要求回答了问题,但Ryan建议我举一个更彻底的例子,以确保为正确的答案提供正确的信息。尽管仍然是简化的示例,但是这里的示例代码更加符合我的实际情况。父组件管理来自用户的评论。想象他们可以创建新评论并选择日期或日期范围。他们还可以更新现有评论。我已经将日期和日期范围选择器放在其自己的组件中。因此,父注释管理器组件需要具有创建/加载注释并将关联的日期向下传递到日期选择器组件的能力。然后,用户可以更改日期,这些值需要传播回父注释管理器,以便以后发送到服务器并保存。如此看来,属性值(日期等)存在双向流动,可以随时从任一端进行更改。注意:此新示例使用类似于Shubham根据我的原始问题建议的方法进行更新。
================================================== =========== …
我想使用 Slider 作为选择器,而不是一大堆单选按钮。它只是看起来更干净。我让它工作得很好,但问题是它总是假设我正在某种规模上进行选择。如果我在中间选择一个值,它会突出显示从开始到我的选择点的所有内容。问题是,我的每个值都是单独的,而不是某种递增规模的一部分(即想象一下,如果选择选项是苹果、香蕉、橙子)。
在下面的链接中,MUI 的滑块类似于示例#1。我需要它像示例#4 一样。 http://react-component.github.io/slider/examples/marks.html
是否可以?或者我只需要使用其他库中的滑块?
谢谢
我认为通过这个简化的示例(在 PostgreSQL 中工作)可以很明显地看出我正在尝试做什么。
with a as
(
select 1 as id, 123.456 as value
)
update
mytable
set value = coalesce(a1.value, a2.value)
from
a as a1,
a as a2
where
a1.id = mytable.id
or
a2.id = mytable.id2
Run Code Online (Sandbox Code Playgroud)
这是一个简化的示例。实际上,“a”表达式非常复杂,我需要在更新表达式中多次加入它。有没有办法在 BigQuery 的一条语句中执行此操作?
现在,我看到的唯一选择是首先在单独的查询中创建“a”作为表,然后执行更新。这可行,但需要按计划频繁运行,因此不是最佳选择。
我看到我们有 AddProtectedRangeRequest,但我想像通过 UI 一样保护整个工作表。有任何想法吗?谢谢!
假设我有一张班级开始时间表和一张学生表以及他们想要的开始时间。我想通过将最接近的 Class.StartTime 与 Student.DesiredStartTime 匹配来加入这两个表(请参见下面的示例)。你会怎么做?我看到这个问题经常被问到和回答,但仅适用于其他数据库(不是 BigQuery)。由于 BigQuery 有一些独特的属性,我想知道 BigQuery 是否有任何特殊功能来帮助实现这一点?谢谢!
Class
+-----------------------------------+------------+
| StartTime | Class |
+-----------------------------------+------------+
| 07/01/19 08:00 | English |
| 07/01/19 09:00 | Chemistry |
| 07/01/19 10:30 | Math |
+-----------------------------------+------------+
Student
+-----------------------------------+------------+
| DesiredStartTime | Student |
+-----------------------------------+------------+
| 07/01/19 08:45 | Jimmy |
| 07/01/19 09:15 | Bobby |
| 07/01/19 10:00 | Buddy |
+-----------------------------------+------------+
[Query Results]
+-----------------------------------+------------+------------+
| StartTime | Class | Student |
+-----------------------------------+------------+------------+
| 07/01/19 09:00 | Chemistry …Run Code Online (Sandbox Code Playgroud) reactjs ×2
sql ×2
css ×1
html ×1
material-ui ×1
python ×1
react-hooks ×1
spring ×1
spring-web ×1
validation ×1