Java 我将如何在main(String[]args)中显示它,以及如何在xml中连接这些类和/或构造函数?
我试图验证一个字符串是否有一个与之关联的数字,如果它有一个数字,则拒绝该值。这是我第一次使用Spring验证,几天来我一直在努力正确设置它。如果字符串不包含数字,我希望它打印出来,但是如果它包含数字,则被验证器拒绝。我也不确定参数是否为目标值。我不确定这一切是如何运作的。以下是我到目前为止的情况:Java 我将如何在main(String[]args)中显示它,以及如何在xml中连接这些类和/或构造函数?,java,xml,spring,validation,target,Java,Xml,Spring,Validation,Target,我试图验证一个字符串是否有一个与之关联的数字,如果它有一个数字,则拒绝该值。这是我第一次使用Spring验证,几天来我一直在努力正确设置它。如果字符串不包含数字,我希望它打印出来,但是如果它包含数字,则被验证器拒绝。我也不确定参数是否为目标值。我不确定这一切是如何运作的。以下是我到目前为止的情况: @Component public class StringValidator implements Validator { public boolean supports(Class&
@Component
public class StringValidator implements Validator
{
public boolean supports(Class<?> clazz)
{
return Main.class.isAssignableFrom(clazz);
}
@Autowired
public void validate(Object target, Errors errors)
{
//the 2nd parameter in ValidationUtils needs to be the string the validator takes in, which should be a set value from Main...?
Main main = (Main) target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, String.valueOf(main), AppConstants.NULL_ERROR_MSG);
if(!errors.hasErrors())
{
boolean containsNbr = false;
for(char c : String.valueOf(main).toCharArray())
{
if(Character.isDigit(c))
{
containsNbr = true;
break;
}
}
if(containsNbr)
{
errors.rejectValue(String.valueOf(main), AppConstants.NUMBERS_ERROR_MSG);
}
else
{
System.out.println(String.valueOf(main));
}
}
}
}
applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:component-scan base-package="com.imports.validationexample"/>
<bean id="main" class="com.imports.validationexample.application" />
<bean id ="springValidator" class="com.imports.validationexample.validation.StringValidator" />
<bean id="main" class="com.imports.validationexample.application.main">
<property name="string" value="Forty8"/>
</bean>
<bean id="validate" class="org.springframework.validation.Validator">
<constructor-arg ref="Validator"/>
</bean>
</beans>
我似乎无法正确地连接它,并且不确定如何在我的主要类中表示它。感谢您的帮助 这里有一种方法可以改进: app-context.xml MyStringHoldingBean:
package com.foo.bar;
public class MyStringHoldingBean {
private String string;
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
}
字符串验证程序:
package com.foo.bar;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
public class StringValidator implements Validator {
public boolean supports(Class<?> clazz) {
return MyStringHoldingBean.class.isAssignableFrom(clazz);
}
public void validate(Object target, Errors errors) {
MyStringHoldingBean main = (MyStringHoldingBean) target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "string", "Not null string, please!");
if (!errors.hasErrors()) {
boolean containsNbr = false;
for (char c : main.getString().toCharArray()) {
if (Character.isDigit(c)) {
containsNbr = true;
break;
}
}
if (containsNbr) {
errors.rejectValue("string", "String contains numbers!");
}
else {
System.out.println(main.getString());
}
}
}
}
pom.xml
<properties>
<spring.framework.version>3.2.6.RELEASE</spring.framework.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.1.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
</dependencies>
Spring验证是关于验证bean的,所以这就是为什么我将该字符串放在MyStringHoldingBean类中。我不明白您想做什么。我看到您正在向一个类main中注入一个字符串,该类似乎是一个公共静态void主类。您希望Spring验证您正在注入的字符串吗?我在java.net.URLClassLoader.findClassURLClassLoader.java:421在java.lang.ClassLoader.loadClassClassLoader.java:652在sun.misc.Launcher$AppClassLoader.loadClassLauncher.java:346在java.lang.ClassLoader.LoadClassLoader.java:618。。。另外,您得到的错误只是类路径中缺少一个jar,也许我的pom会帮助您。
package com.foo.bar;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
public class StringValidator implements Validator {
public boolean supports(Class<?> clazz) {
return MyStringHoldingBean.class.isAssignableFrom(clazz);
}
public void validate(Object target, Errors errors) {
MyStringHoldingBean main = (MyStringHoldingBean) target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "string", "Not null string, please!");
if (!errors.hasErrors()) {
boolean containsNbr = false;
for (char c : main.getString().toCharArray()) {
if (Character.isDigit(c)) {
containsNbr = true;
break;
}
}
if (containsNbr) {
errors.rejectValue("string", "String contains numbers!");
}
else {
System.out.println(main.getString());
}
}
}
}
<properties>
<spring.framework.version>3.2.6.RELEASE</spring.framework.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.1.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
</dependencies>