1

我在 Intellij Idea 中发现了一个奇怪的行为。在一个大约 300 行的复杂 jspx 页面中,intellij idea 无法再正确格式化代码。

编辑:此问题仅在页面另存为 .jspx 时出现。如果我将它保存为 .xml,问题就会消失。

例如这个页面:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" xmlns="http://www.w3.org/1999/xhtml"
      xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:my="http://java.sun.com/jsf/composite/mycomponents"
    >
<ui:composition>
<f:view>
<p:panel header="XXX">
<p:outputLabel value="YYY"/>
</p:panel>
</f:view>
</ui:composition>
</jsp:root>

当我按下 Ctrl+Alt+L 时,我得到了正确的输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" xmlns="http://www.w3.org/1999/xhtml"
      xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:my="http://java.sun.com/jsf/composite/mycomponents"
    >

<ui:composition>
    <f:view>
        <p:panel header="XXX">
            <p:outputLabel value="YYY"/>
        </p:panel>
    </f:view>
</ui:composition>
</jsp:root>

但是当我<p:outputLabel value="YYY"/>在页面中粘贴大约 300 次时,自动格式化停止工作。

在更复杂的示例中,只有部分代码被格式化(例如,里面的所有内容都p:panel被格式化,但是ui:compositionf:view保持在​​相同的位置(没有缩进)。

我没有找到任何有用的配置。有没有办法摆脱这种行为?

我使用 Intellij Idea 12 Ultimate

4

2 回答 2

2

更新:该错误的解决方法是设置Code Style| HTML| Other| Do not indent children if tag size more than 200 lines

可以在此处跟踪该错误。

这似乎是一个错误,在这里报告,请投票。

于 2013-09-17T05:03:03.767 回答
0

在想法中有这种行为的设置:

请调整设置:CodeStyle | HTML | 其他 | 如果标签大小超过 <200> 行,则不要缩进子级

https://youtrack.jetbrains.com/issue/IDEA-113688

于 2014-10-20T13:04:57.073 回答