如何为项目中的所有应用程序(或至少1个应用程序)覆盖默认表单错误消息(例如:需要使用其他语言)
谢谢!
是否可以使用消息退出错误,而不使用if语句?
[[ $TRESHOLD =~ ^[0-9]+$ ]] || exit ERRCODE "Threshold must be an integer value!"
Run Code Online (Sandbox Code Playgroud)
当然,右侧||
不起作用,只是为了让您更好地了解我想要完成的任务.
实际上,我甚至不介意它将退出哪个ERR代码,只是为了显示消息.
编辑
我知道这会有效,但如何numeric arg required
在我的自定义消息后抑制显示?
[[ $TRESHOLD =~ ^[0-9]+$ ]] || exit "Threshold must be an integer value!"
Run Code Online (Sandbox Code Playgroud) 要从其他线程更新GUI,基本上有两种主要方法:
将java.lang.Runnable与以下任何方法一起使用:
Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long)
Handler.post(Runnable)
Run Code Online (Sandbox Code Playgroud)使用android.os.Message:
Handler.sendMessage(Message) / Handler.handleMessage(Message)
Run Code Online (Sandbox Code Playgroud)您也可以使用AsyncTask,但我的问题更侧重于更新非常简单的组件的用例.让我们看看如何使用这两种方法完成:
使用Runnables:
TextViev tv = ...;
final String data = "hello";
Runnable r = new Runnable() {
@Override
public void run(){
tv.setText(data);
}
};
//Now call Activity.runOnUiThread(r) or handler.post(r), ...
Run Code Online (Sandbox Code Playgroud)使用消息:
Message m = handler.obtainMessage(UPDATE_TEXT_VIEW, "hello");
handler.sendMessage(m);
//Now on handler implementation:
@Override
public void handleMessage(Message msg) {
if(msg.what == UPDATE_TEXT_VIEW){
String s = (String) msg.obj;
tv.setText(data);
} ... //other IFs?
}
Run Code Online (Sandbox Code Playgroud)恕我直言,消息不是要走的路,因为:
另一方面,Runnables遵循众所周知的命令模式,并且更加程序员友好且可读.
那么使用Messages …
好吧,这是我自己的错,但我似乎无法拯救自己.
每当我尝试进入一个具有调用.NET代码的赋值字段的类时,我会得到一个对话框,其中包含"没有可用于当前位置的源代码"的文本.
例如,单步执行以下类的构造函数会给我上面的消息:
public class Test
{
private Stack<String> _Dummy = new Stack<String>();
public Test() { }
}
Run Code Online (Sandbox Code Playgroud)
我认为这是因为在某些时候我摆弄了符号服务器的设置,但不管我现在摆弄什么,我似乎无法摆脱那条消息.
我的愚蠢在哪里忘记了它的作用?
我目前的选择摘要:
我有使用特殊验证的属性,其中我使用message子句显示仅用于该验证的特殊消息.这是一个例子:
validates :email, presence: true, length: { maximum: 60 },
format: { with: valid_email_regex, message: "is not a valid email address format." },
uniqueness: { case_sensitive: false }
Run Code Online (Sandbox Code Playgroud)
我想在这里翻译消息,但我不知道该怎么做.
我看过他们输入类似这样的例子:message:t("some_value_here").我不确定这个名称.我试过这样的消息:t(:bad_email).我在我的yaml文件中做了以下尝试.
activemodel:
errors:
bad_email: "is not a valid email address format."
Run Code Online (Sandbox Code Playgroud)
当我尝试访问我的Rails应用程序时,我收到以下错误:
ActionView::Template::Error (undefined method `t' for #<Class:0x007fefc1b709e0>)
Run Code Online (Sandbox Code Playgroud)
我也在我的yaml文件中尝试过这个:
activemodel:
errors:
user:
bad_email: "is not a valid email address format."
Run Code Online (Sandbox Code Playgroud)
我一整天都在研究这个问题.我能找到的就是替换内置的错误哈希,如空白或空.有没有办法让我有自定义错误哈希并在模型中替换它们?在这一点上,我不能让t以编码方式工作.我希望问题是我如何设置我的yaml文件.我已经看到了如何设置它的不同版本.我不确定我是否应将其放在activemodel或activerecord下.我假设activemodel,因为那是我要翻译的自定义消息.
任何帮助,将不胜感激.这是我在启动应用程序的第一次翻译之前需要弄清楚的最后一部分.
更新日期7/29/2013 7:30 pm CDT
bgates给了我一个非常好的开始,如何设置我的模型文件以接收YAML文件中的自定义消息.但是我最终必须在我的yaml文件中进行以下设置才能找到自定义消息.
activerecord:
errors:
models:
user:
attributes:
bio:
no_links: "cannot contain email addresses or website …
Run Code Online (Sandbox Code Playgroud) error-handling message localization ruby-on-rails internationalization
我试图在Vim脚本中显示错误消息:
function! Foo()
" ...
endfunction
au BufWritePost *.py silent call Foo()
Run Code Online (Sandbox Code Playgroud)
"throw"关键字有效,但可能不是正确的方法.我找到了对"echomsg"的引用,但这没有任何影响:
echohl ErrorMsg
echomsg 'Hello World'
echohl NONE
Run Code Online (Sandbox Code Playgroud)
我也尝试写入v:statusmsg(也没有效果).任何的想法?
另外,我可能还想像throw()那样停止信号传播,即不会调用监听BufWritePost事件的其他钩子.
在Python中,如果我打开一个不存在的二进制文件,程序将退出并显示错误并打印:
Traceback (most recent call last):
File "C:\Python_tests\Exception_Handling\src\exception_handling.py",
line 4, in <module>
pkl_file = open('monitor.dat', 'rb')
IOError: [Errno 2] No such file or directory: 'monitor.dat'
Run Code Online (Sandbox Code Playgroud)
我可以通过'try-except'来处理这个问题,例如:
try:
pkl_file = open('monitor.dat', 'rb')
monitoring_pickle = pickle.load(pkl_file)
pkl_file.close()
except Exception:
print 'No such file or directory'
Run Code Online (Sandbox Code Playgroud)
我怎么能在捕获的Exception中打印以下行?
File "C:\Python_tests\Exception_Handling\src\exception_handling.py",
line 11, in <module>
pkl_file = open('monitor.dat', 'rb')
Run Code Online (Sandbox Code Playgroud)
所以程序不会退出.
我理解它是如何工作的但如果我想将MD5打印成String我该怎么做?
public static void getMD5(String fileName) throws Exception{
InputStream input = new FileInputStream(fileName);
byte[] buffer = new byte[1024];
MessageDigest hash = MessageDigest.getInstance("MD5");
int read;
do {
read = input.read(buffer);
if (read > 0) {
hash.update(buffer, 0, read);
}
} while (read != -1);
input.close();
}
Run Code Online (Sandbox Code Playgroud) 我正在编写Chrome扩展程序,在其中的一部分中,我需要在单击弹出页面上的按钮时获取当前选项卡的标题和URL.
我以前曾经使用过Chrome的消息传递系统,并且经过多方努力,很多时候都设法让它运行起来.但是,我从来没有必要在弹出页面上使用它们,而且从我读过的内容来看,这样做要困难得多.
到目前为止,我设法弄清楚的时间表是这样的:
popup.html
/ popup.js
:单击按钮popup.html
/ popup.js
:请求/消息被发送到内容脚本contentScript.js
:从弹出页面接收请求/消息contentScript.js
:当前选项卡的标题和URL存储在变量中contentScript.js
:2个变量作为字符串化响应发送popup.html
/ popup.js
:从响应中解析出2个变量通常我会想到这一点,但是,我已经阅读了一些在工作中抛出扳手的东西,例如:
chrome.tabs.getSelected
只能在后台页面/脚本中使用.这是否意味着根本不需要使用内容脚本?我已经发现Chrome的消息传递系统很难,但这让我很困惑.因此,这篇文章.
我想编写一个向用户显示状态消息的函数,该消息显示时间,完成百分比和进程的当前状态.我可以处理组合消息,但我想做的事情不仅仅是打印到控制台并让它向上滚动,一个消息接着另一个.我真的很喜欢在不滚动message()
和没有任何图形的情况下更改消息.这可能与R?