再会!
我开始使用 StringTemplate 并且遇到了一个非常烦人的问题。我有一个简单的模板“T.st”
T(name, email, passwort) ::= << ... >>
Run Code Online (Sandbox Code Playgroud)
它保存在目录“模板”中,该目录是我的源文件夹“src/main/resources”的一部分。当我执行以下几行时
STGroup group = new STGroupDir("templates");
ST st = group.getInstanceOf("T");
Run Code Online (Sandbox Code Playgroud)
组变量的根字段的值为“jar:file:/D:/path/to/apache-tomcat-8.0.21/wtpwebapps/application/WEB-INF/lib/service.jar!/templates/”
但是 st 将为空,即使 groupdir 显然已被找到,因为它存在于给定的 service.jar 中,并且当我将目录名称更改为不存在的名称时,我会收到一个异常,即该目录不存在。但我不确定为什么我无法获得我的 T 模板的实例。
假设我将我的模板保存在“C:/templates”中并使用它来获取 STGroup 我最终将获得一个有效实例并可以呈现正确的字符串。如果我的模板存储在普通目录(工作)或我的 service.jar 中的目录(不工作)中,为什么会有区别?
问候
我在 HID 模式下通过蓝牙将外部条码扫描仪连接到我的平板电脑,并尝试处理我的应用程序中的输入。条码扫描器基本上像键盘一样工作。
我有一个简单的 gui,在我的主要活动中,我有以下方法:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
System.out.println(keyCode + " - " + (char) event.getUnicodeChar());
return true;
}
Run Code Online (Sandbox Code Playgroud)
问题:
当我打开一个文本应用程序,比如谷歌笔记并扫描任何代码时,条形码被插入,然后是一个新行。这让我觉得我可以处理关键事件并将所有字符写入字符串构建器,直到我到达“Enter”的关键事件。
但问题是,当我在我的应用程序中使用扫描仪(此条形码)时,上述方法的输出如下:
59 - ?? <- 'Shift'
29 -
59 - ??
47 - s
62 -
8 - 1
9 - 2
10 - 3
事件中无法捕获条形码末尾的“Enter”(应该是 keyCode 66),但我的 GUI 中的元素之一被突出显示,这意味着扫描仪必须发送“Enter”
当我将多行 EditText 添加到我的 GUI 并在元素聚焦时扫描相同的条形码时,输出如下:
29 - a
47 - s
62 -
8 - 1
9 - 2
10 - 3 …