我有以下spring xml配置标头:
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<tx:annotation-driven transaction-manager="transactionManager"/>
....
当我在想法中打开文件时,我看到红色错误:
1。xmlns:p="http://www.springframework.org/schema/p
-
未注册URI
但它运作良好。
如何避免红色错误?
我的xml配置中有以下片段:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hbm2ddl.auto">validate</prop>
</props>
</property>
</bean>
答案 0 :(得分:2)
一个特殊的命名空间(p命名空间)没有在XSD文件中定义,只存在于Spring本身的核心。 p-namespace不需要架构定义,是配置属性的另一种方法 与你目前所看到的方式不同。
由于 p:“名称空间”没有关联的XSD方案,因此Intelijj无法验证此命名空间。
一种解决方案是在IDEA中取消验证,但您无法找到其他问题。
似乎Intelijj IDEA没有为此问题提供任何解决方案。 https://youtrack.jetbrains.com/issue/IDEA-101723
答案 1 :(得分:1)
如果从xml中删除这行代码xmlns:p =“http://www.springframework.org/schema/p”,则会清除错误。因为春天没有这样的xsd。如果您想使用此类xsd,则可以尝试使用以下代码:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
p:dataSource-ref="dataSource"
p:mappingResources-ref="mappingResourcesList"
p:hibernateProperties-ref="hibernatePropertiesProps" />
基本上,它们被定义为映射到相同的XML名称空间。
答案 2 :(得分:0)
您使用不存在的架构将“p”注册为命名空间。如果您没有<p: ></p: >
之类的任何标签,那么您的配置仍将在运行时运行。但是,IDE会检查以确保所有命名空间定义都正确(即使未使用)。
解决问题的最简单方法是删除有问题的命名空间定义。如果您正在使用该命名空间,请找到该架构的正确位置并将其放在那里。