我正在使用spring-2.5(无法升级,产品依赖),当我使用p-namespace符号和一些值表达式时,我注意到Eclipse格式化程序的一个奇怪的行为:
如果我使用标准方式(没有p命名空间),请执行以下操作:
<bean id="ldapConfig" class="org.mycompany.project.config.LDAPConfig">
<property name="ldapServer" value="${ldap.server}" />
<property name="ldapPort" value="${ldap.port}" />
<property name="ldapBindDn" value="${ldap.bindDn}" />
<property name="ldapPass" value="${ldap.password}" />
</bean>
并按下组合键:Ctrl-Shift-F
格式化(例如缩进)效果非常好。
现在,如果我使用p-namespace
这样的表示法:
<bean id="ldapConfig" class="org.mycompany.project.config.LDAPConfig">
<p:ldapServer="${ldap.server}" />
<p:ldapPort="${ldap.port}" />
<p:ldapBindDn="${ldap.bindDn}" />
<p:ldapPass="${ldap.password}"/>
</bean>
当我按下组合键时:Ctrl-Shift-F
格式化(例如缩进)
删除了部分代码
<bean id="ldapConfig" class="org.mycompany.project.config.LDAPConfig">
<p:ldapServer = ldap.server } />
<p:ldapPort = ldap.port } />
<p:ldapBindDn = ldap.bindDn } />
<p:ldapPass = ldap.password } />
</bean>
值表达式(${variable}
)和p命名空间之间是否存在任何不兼容性,或者它只是XML格式化部分的Eclipse错误?
答案 0 :(得分:1)
使用p-namespace时ldapConfig的Bean定义不正确。通过使用p命名空间,您可以使用属性作为描述属性值的bean元素的一部分,而不是使用嵌套元素。可以找到更多详细信息here。
假设您已将名称空间声明为xmlns:p =“http://www.springframework.org/schema/p”
使用它的正确方法是:
<bean id="ldapConfig" class="org.mycompany.project.config.LDAPConfig"
p:ldapServer="${ldap.server}"
p:ldapPort="${ldap.port}"
p:ldapBindDn="${ldap.bindDn}"
p:ldapPass="${ldap.password}">
</bean>
现在尝试CTRL-SHIFT-F