我需要将一个正则表达式设置为spring配置文件中的属性值。我的代码是这样的
xml文件
<property name="regex">
<value type="java.lang.String">[^&%$#@!/~]*</value>
</property>
java代码
public void setRegex(String regex) {
try {
Pattern.compile(regex);
this.regex = regex;
} catch (PatternSyntaxException exception) {
System.err.println(exception.getDescription());
}
}
但这不起作用。它在运行时抛出异常。
[exec] java.lang.IllegalStateException
[exec] at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1588)
[exec] at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
[exec] at com.sun.faces.application.ConverterPropertyEditorFactory$DisposableClassLoader.loadClass(ConverterPropertyEditorFactory.java:447)
[exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[exec] at java.lang.Class.getDeclaredConstructors0(Native Method)
[exec] at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
[exec] at java.lang.Class.getConstructor0(Class.java:3075)
[exec] at java.lang.Class.newInstance(Class.java:412)
[exec] at com.sun.beans.finder.InstanceFinder.instantiate(InstanceFinder.java:96)
[exec] at com.sun.beans.finder.PropertyEditorFinder.find(PropertyEditorFinder.java:81)
[exec] at java.beans.PropertyEditorManager.findEditor(PropertyEditorManager.java:90)
[exec] at com.sun.faces.application.ApplicationImpl.addPropertyEditorIfNecessary(ApplicationImpl.java:690)
[exec] at com.sun.faces.application.ApplicationImpl.addConverter(ApplicationImpl.java:660)
[exec] at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:727)
[exec] at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:489)
[exec] at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:381)
[exec] at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
[exec] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
[exec] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
[exec] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
[exec] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
[exec] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
[exec] at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:663)
[exec] at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1642)
[exec] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[exec] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[exec] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[exec] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[exec] at java.lang.Thread.run(Thread.java:745)
完整堆栈跟踪
答案 0 :(得分:1)
使用正则表达式值,您应该得到错误
实体名称必须紧跟&#39;&amp;&#39;在实体参考&#34;因为&#39;&amp;&#39;字符
在xml中,尝试更改正则表达式值,如下所示,看看是否仍然出现IllegalStateException。
<property name="regex">
<value type="java.lang.String">[^&%$#@!/~]*</value>
</property>