JSF传递元素导致错误结束标记

时间:2014-10-28 20:35:47

标签: html5 jsf primefaces pass-through

在我的JSF项目中,我尝试使用JSF传递来利用与HTML5兼容的标记,而不是PrimeFaces组件。但它似乎导致空元素的额外结束标记,如hr,img,br,这会破坏我的布局。

这是我的代码,完整的。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:jsf="http://xmlns.jcp.org/jsf">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>JSF Passthrough Test</title>
</head>
<body>
    <form>
        <input id="inputSearch" size="40" value=""/>
        <button type="button" class="btn btn-default" jsf:id="searchbutton">
            <span class="glyphicon glyphicon-search"></span> Find
        </button>
    </form>
    <img src="http://i.imgur.com/atz81.jpg" alt="Cat + Unicorn"/>
</body>
</html>

这为浏览器提供了一个额外的关闭img标记,用于我之后的图像。 (如果我在按钮前移动图像,没问题。)

<img src="http://i.imgur.com/atz81.jpg" alt="Cat + Unicorn" />
</img>

我在这里遗失或做错了吗?感谢。

1 个答案:

答案 0 :(得分:1)

有!我创建了一个复制代码行的项目。我没有在DOM上呈现额外的img标记,但是,它呈现了一条JSF警告消息。这条消息是否会影响你?

如果是这样,原因是您在HTML5标记中缺少某些JSF属性,例如jsf:id,用于表单,头部和正文标记。如果您没有指定任何jsf属性,JSF将忽略此标记并且不会将其转换为JSF等效项。因此,请在代码中尝试以下更改:

<head jsf:id="head">
    <!-- YOUR HEADER TAGS HERE  -->
</head>

<body jsf:id="body">
       <form jsf:id="frmMain">
          <!-- YOUR BODY TAGS GOES HERE -->
       </form>
</body>

注意,您的输入不指定任何jsf属性。因此,它不会呈现为JSF组件。并且,您没有将bootrap CSS / JS链接到您的页面。我猜你只是夸大了它。

嗯,我希望它可以帮到你。 CYA!