在我的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>
我在这里遗失或做错了吗?感谢。
答案 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!