在我的Grails应用程序中,我有一个带有以下标记的GSP:
<p class='foo'>
<label>Email</label>
<g:textField id="email" name="email" class="field required email"
title="Please enter a valid email address" maxlength="50" value="${signUp?.email}"/>
<g:eachError bean="${signUp}" field="email">
<div class="fieldError"><g:message error="${it}"/></div>
</g:eachError>
</p>
<label>Your Age:</label>
当电子邮件字段出错时,会生成以下HTML:
<p class="foo">
<label style="width: 100px;">Email</label>
<input id="email" class="field required email" type="text" value="" maxlength="50" title="Please enter a valid email address" name="email" style="width: 275px;">
</p>
<div class="fieldError" style="margin-left: 155px;">No email was provided</div>
<p></p>
<label style="width: 100px; vertical-align:middle;">Your Age:</label>
我无法弄清楚:
<div class="fieldError>
出现在<p class='foo'>
<p></p>
来自哪里?答案 0 :(得分:4)
<p>
元素不允许其中的块级元素,因此<div class="fieldError>
位于<p class='foo'>
之外。
我不确定为什么你在第一个标签下方有一个额外的p
标签。你刚才使用纯HTML时可以发布生成的HTML吗?
快速实验表明,嵌套块元素在FF6,Chrome 13和Opera 11.51中神秘地生成另一个<p>
标记
这是输入的代码:
<p>
P
<div>
DIV1
<div>
DIV1a
</div>
</div>
</p>
这是输出:
<p>P</p>
<div>
DIV1
<div>
DIV1a
</div>
</div>
<p></p>
似乎每个块级元素(此处为<div>
)都会被推出任何<p>
标记,并在其下方创建另一个<p>
标记。
P元素代表一个段落。它不能包含块级 元素(包括P本身)。