2014-03-26 38 views
0

我对在java中使用逻辑运算符感到困惑。我正在使用struts 1进行字段验证。这里是我的代码:Java中的逻辑运算符(使用Validation with Struts 1)

ActionErrors errors = new ActionErrors(); 

if(StringUtils.isBlank(getCode()) || StringUtils.isBlank(getNewCode())){ 
      errors.add("code", new ActionMessage("error.codeMode.required")); 
      errors.add("codeNew", new ActionMessage("error.codeMode.required")); 

     } 

如果字段“代码”不为空,并现场“newCode”为空,该字段显示“代码”的错误信息(即使它不是空的),同领域'newCode'的东西。我想知道是否有关于避免操作者或组合的一些解决方案(真||假)

这就是我在寻找:(0 =假1 =真)

0 || 0 => 0 
1 || 0 => 0 
0 || 1 => 0 
1 || 1 => 1 
+0

好吧,你的代码表示,如果条件为真(整个事情),然后添加两个消息。电脑很笨。他们不读头脑。所以它不知道你的意思是“仅在适当的时候添加第一条消息”,以及“只在适当时添加第二条消息”。你告诉它做这两件事,它都做。 – ajb

+0

是的,我完全同意你的看法。我会更清楚地编辑我的帖子 – Majda

回答

1

不熟悉这项技术,但从
逻辑的观点来看,这对我来说更有意义。

if(StringUtils.isBlank(getCode())){ 
    errors.add("code", new ActionMessage("error.codeMode.required")); 
} 

if(StringUtils.isBlank(getNewCode())){ 
    errors.add("codeNew", new ActionMessage("error.codeMode.required")); 
} 

不知道这是你所需要的,只是猜测。

+0

是的,谢谢,但我知道我可以做到这一点,我只是希望找到另一种解决方案(因为我有其他IF) – Majda

0

我找到了解决办法,即使它不是完全以逻辑的作品:(只需添加AND)

if(StringUtils.isBlank(getCode()) && StringUtils.isBlank(getNewCode())){   errors.add("code", new ActionMessage("error.codeMode.required"));   errors.add("codeNew", new ActionMessage("error.codeMode.required"));  } 

,第二个这个问题,因为peter.petrov建议我:

if(StringUtils.isBlank(getCode())){ 
    errors.add("code", new ActionMessage("error.codeMode.required")); 
} 

if(StringUtils.isBlank(getNewCode())){ 
    errors.add("codeNew", new ActionMessage("error.codeMode.required")); 
} 

如果有人有另一种解决方案对我更有帮助。

0

没有“其他解决方案”。如果您输入||,那么如果只有一个字段为空,则会添加这两个错误。如果你输入&&那么当两个字段都是空格时,这两个错误都会被添加,但是如果只有一个是空的,那么什么都不会被添加(这也不是你想要的)。

唯一的办法是什么peter.petrov建议

+0

是的,我知道,但它的工作原理是'code'和'codeNew',这些字段中的每一个都在不同的页面中(即使添加了两个错误消息,在页面中只显示一个),但我更喜欢使用peter.petrov的解决方案,即使它不是更好的解决方案 – Majda