Eclipse错误地格式化了一个Spring p-namespace bean

时间:2014-04-23 13:25:30

标签: eclipse spring code-formatting spring-2.5

我正在使用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错误?

1 个答案:

答案 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