2014-10-28 65 views
2

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

这是我的代码,完整。

<!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

有!我创建了一个复制代码行的项目。我没有在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组件呈现的。而且,您并未将bootsrap CSS/JS链接到您的页面中。我假设你只是忽略它。

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