Tag: validation

如何在InputMismatchException之后重试输入?

我正在创建一个从用户获取输入的程序。如果用户输入无效命令,我想重新运行输入选项。 像这里只有整数输入是首选,但如果用户输入文本,那么我想捕获exception并重新运行该方法。 我试过这个但是它把我变成了一个无限循环。这是实现这个目标的最好方法。 如果有人帮助我这件事会很棒。 boolean retry = true; while(retry){ try{ //considering response from the user System.out.print(“\nEnter Your Command : “); f_continue = processresponse(scanner.nextInt()); retry = false; }catch(InputMismatchException e){ System.err.println(“\nPlease Input a Valid Command from 1-5 or 0 for Exit”); } }

根据格式validation字符串日期为有效日期的最佳方法是什么?

最近开始使用WEB UI。 并遇到了日期字符串解析/validation的问题。 “dd-mm-yyyy”我找到的一些方法是: 匹配 – 不完整validation,不灵活。 (19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01]) 有一个post,家伙建议用可能的日期字符串预初始化Set – 快速,有效,但也不灵活和内存消耗 是否有更容易的东西,可能在公共图书馆中可用? 请不要建议SimpleDateFormat 🙂 更新 java 8正确答案是https://stackoverflow.com/a/43076001/1479668

在setEnabled(true)之后,JButton不会立即获得焦点

我正在尝试创建一个直观的用户界面,用户可以在其中输入数值到JTextFields ,使用TAB键前进,最后激活按钮开始处理输入。 在开始时,该按钮被禁用,只有在将所有数据输入文本字段时才应启用该按钮。 我使用javax.swing.InputVerifier来限制只输入最多4位小数的正数,并且工作正常。 有3个可聚焦对象,两个文本字段和按钮。 在文本字段中键入(有效)数字后按TAB键,如果所有文本字段都包含有效输入,则启用该按钮。 这也很好。 问题是: 在第一个文本字段已包含有效数据并按下TAB后 ,将有效数据键入第二个文本字段后, 该按钮无法获得焦点 。 相反,焦点被转移到行中的下一个可聚焦对象,该行是(再次)第一个文本字段。 我尝试使用两种不同的方法: 按钮的enabled属性通过覆盖focusLost()方法内的FocusListener更改 按钮的enabled属性在overriden shouldYieldFocus()方法中更改 在这两种情况下,焦点在启用按钮后立即跳过按钮 。 但是,如果我们继续使用TAB和SHIFT + TAB键更改焦点,则按钮会在第二个文本字段后立即获得焦点。 在我看来,在启用按钮之前已经预先确定了opposite组件,因此即使在启用按钮后按钮也不会获得焦点。 我甚至试图在启用按钮后使用requestFocusInWindow()强制按钮获得焦点,但是这也没有用,所以问题是如何强制 LayoutFocusTraversalPolicy 重新评估布局,以便它可以立即考虑到新的介绍按钮是在禁用之前? 以下是我尝试的两种方法的代码: 按钮的enabled属性通过focusLost()方法中的FocusListener更改: package verifiertest; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; import javax.swing.text.JTextComponent; import javax.swing.UIManager; import java.awt.GridLayout; import java.awt.Toolkit; import java.math.BigDecimal; import […]

如何使用编译时genericsvalidation替换运行时instanceof检查

真正的Java Generics专家有一点难题……;) 假设我有以下两个接口: interface Processor { void process(Foo foo); } interface Foo { Processor getProcessor(); } 例如,以下两个实现类: static class SomeProcessor implements Processor { static final SomeProcessor INSTANCE = new SomeProcessor(); @Override public void process(Foo foo) { if (foo instanceof SomeFoo) { // <– GET RID OF THIS ? // process ((SomeFoo) foo) } } } […]

validationAndroidManifest.xml文件

我正在开发一个分析android应用程序的Java SE应用程序。 是否有可用于validationAndroidManifest.xml的架构/ DTD? 如果发现名称空间定义如下 xmlns:android=”http://schemas.android.com/apk/res/android” 但schemas.android.com没有解析为一个acutal主机所以那里没有架构文件:-( 注意:我不想在Android上作为平台进行validation。

如何validationvaadin中的字段

我正在用vaadin创建一个Java项目。 现在我有一个用户注册表格,如下所示: public class RegistrationComponent extends CustomComponent implements View { public static final String VIEW_NAME = “Registration”; public RegistrationComponent(){ Panel panel = new Panel(“Registration Form”); panel.setSizeUndefined(); FormLayout content = new FormLayout(); CheckBox checkBox1, checkBox2, checkBox3; checkBox1 = new CheckBox(“Check Box 1”); checkBox2 = new CheckBox(“Check Box 2”); checkBox3 = new CheckBox(“Check Box 3”); checkBox1.setRequired(true); checkBox2.setRequired(true); […]

在eclipse-rcp / swt中创建多个相同的文本validation侦听器

我正在尝试validation多个文本框的输入(即它们应该是一个数字),并在此处找到了有用的代码片段。 但是,如果我有三个文本框( text , moreText和evenMoreText ),我如何应用具有相同function的validation侦听器,而不必重复( .addVerifyListener(new VerifyListener() {… )代码三次? 我不想实现switch语句或类似的(决定将它应用于哪个文本框),我想要更通用的东西(我可以将其用于将来使用的其他类)。 text.addVerifyListener(new VerifyListener() { @Override public void verifyText(VerifyEvent e) { final String oldS = text.getText(); final String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end); try { BigDecimal bd = new BigDecimal(newS); // value is decimal // Test value range } catch (final NumberFormatException numberFormatException) […]

使用java Date和SimpleDateFormatvalidation范围

嘿伙计们,我想知道当我尝试使用此代码解析日期时是否有可以处理的Dateexception: try{ SimpleDateFormat df = new SimpleDateFormat(“dd:MM:yyyy”); Date date = df.parse(dateRelease); }catch (ParseException e) {} 好吧,如果“dateRelease”不是正确的格式类型,它会抛出ParseException,但是如果有人写“40/03/2010” – 我想知道错误的日期,月份或年份无效范围。 实际上,当发送无效日期时,SimpleDateFormat只会创建一个带有默认数字的新日期。 我是否必须使用正则表达式创建我自己的方法来处理它,或者是否存在一个告诉我要捕获它的现有exception?

正则表达式疯狂:java.util.regex.Pattern matcher进入高CPU循环

注意:我已经看到了这个问题 ,但没有人回答它,所以它没有多大帮助。 奇怪的是,被标记为“可能重复”的问题已被删除(我第一次看到它。) 我们使用Pattern进行正则表达式validation时遇到问题。 我们的代码中没有发生这种情况,整个事情都发生在Spring Framework和Hibernate的validation中。 (Spring 3.2.1,Spring 3.1.1,Hibernate Validation 4.2.0) 此调用尝试使用@Valid注释validationSpring Framework @ModelAttribute注释: @RequestMapping(“/foo/bar”) public String doFooBar(@Valid @ModelAttribute(“fooBarForm”) FooBar form) validation的FooBar对象上的字段具有如下的@Pattern注释: public class FooBar implements Serializable{ @Length(min=0,max=22) @Pattern(regexp=ValidPattern.MYVALIDPATTERN) private String myField; 类FooBar还包含其他自定义对象,这些对象具有自己的级联validation。 ValidPattern.MYVALIDPATTERN中的validation模式如下所示: ^([\w\-,:'”\.\?+_#~!@#$&*() /]*|(?:™)*|(?:®)*|(?:©)*)*$ 调用此validation时,它可以在99.99%的时间内正常工作。 但至少每天一次,一个线程以某种方式与整个服务器“逃跑”,我们必须手动杀死它(否则最终导致堆栈溢出。) 当我们杀死线程时,我们发现线程已经卡在这个Pattern类中,反复做一些事情(下面的堆栈跟踪)。 关于如何修复(甚至陷阱)这个的任何想法? [Top of stack] java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) […]

java电话号码validation

这是我的问题: 为电话号码创建一个构造函数,给定一个字符串,格式为xxx-xxx-xxxx或xxx-xxxx,表示本地号码。 如果格式无效,则抛出exception。 所以我想用正则表达式validation它,但我不知道我是否正确地做了。 我还要扔什么样的例外? 我需要创建自己的例外吗? public TelephoneNumber(String aString){ if(isPhoneNumberValid(aString)==true){ StringTokenizer tokens = new StringTokenizer(“-“); if(tokens.countTokens()==3){ areaCode = Integer.parseInt(tokens.nextToken()); exchangeCode = Integer.parseInt(tokens.nextToken()); number = Integer.parseInt(tokens.nextToken()); } else if(tokens.countTokens()==2){ exchangeCode = Integer.parseInt(tokens.nextToken()); number = Integer.parseInt(tokens.nextToken()); } else{ //throw an excemption here } } } public static boolean isPhoneNumberValid(String phoneNumber){ boolean isValid = false; //Initialize reg ex […]