2

在我的 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>

我在这里有什么遗漏或做错了吗?谢谢。

4

1 回答 1

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 组件。而且,您没有将引导程序 CSS/JS 链接到您的页面中。我假设你只是忽略了它。

嗯,希望对你有帮助。赛亚!

于 2015-01-16T00:39:02.763 回答