在spring

时间:2015-08-20 05:13:35

标签: java regex spring

我需要将一个正则表达式设置为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)

完整堆栈跟踪

1 个答案:

答案 0 :(得分:1)

使用正则表达式值,您应该得到错误

  

实体名称必须紧跟&#39;&amp;&#39;在实体参考&#34;因为&#39;&amp;&#39;字符

在xml中,尝试更改正则表达式值,如下所示,看看是否仍然出现IllegalStateException。

<property name="regex">
    <value type="java.lang.String">[^&amp;%$#@!/~]*</value>
</property>
相关问题