gpt4 book ai didi

java - 验证用户输入

转载 作者:行者123 更新时间:2023-12-02 04:21:20 24 4
gpt4 key购买 nike

我在 Xtext DSL 中实现了以下规则:

House:
'House' name=ID
description=STRING?
('height' height=DOUBLE heightUnit=UNIT)? &
('width' width=DOUBLE widthUnit=UNIT)? &
'end' 'House'
;

enum UNIT:
m = 'm' |
cm = 'cm'
;

它允许我使用基于该 DSL 的编辑器定义以下内容:

House MyHouse
"This is my house"
height 15.5 m
width 3000.2 cm
end MyHouse

如何验证用户定义的单位?例如,高度和宽度的单位应为 m,如果用户定义不同的值(例如 cm),编辑器应显示错误。

我检查过this网站,它描述了如何创建验证规则,但是我必须在哪里注册它们,以便它们能够正常工作?

更新:正如 Ravens 在其帖子下的评论中所述,我使用了逆向工程并添加了相应的包和类,现在如下所示:

package com.language.validation

import com.language.mylanguage.House
import org.eclipse.xtext.validation.Check

class MylanguageValidator {

@Check
def unitCheck(House house) {
val hWidth = house.width

if (hWidth != null) {
if (!hWidth.equals("m")) {
val errorMsg = "House width must be defined in m";
// error method undefined
}
}
}
}

该类的Package位于插件项目com.language.mylanguage内。我正在尝试验证用户是否使用 m 作为单位。如果不是,则会出现错误消息。方法 error() 未定义。我必须导入或扩展另一个类吗?

最佳答案

您的语言的 mwe2 工作流程可能缺少 ValidatorFragment。该片段创建 stub 并为您进行 guice 绑定(bind),因此您只需用逻辑填充该类。

关于java - 验证用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com