官方文档中廖廖几笔:Outputs its body as verbatim text. No JSP tags within the verbatim tag (including JSF tags) are evaluated; the content is treated simply as literal text to be copied to the response. Unless otherwise specified, all attributes accept static values or EL expressions.
简单说来就是,标签里包含什么,就在网页上输出什么!!!最近在项目中看到<f:verbatim>被滥用(新手常范),特此把实践中的经验跟大家分享一下 :)
需要在JSF标签(如:dataTable,dataScrollor等)中,包含非JSF内容(如:HTML标签,普通文本)时,必须用<f:verbatim>包含这些非JSF内容。有人会问:<f:verbatim>标签必须包含在<f:view>内,按照上面所说,<f:view>标签中的内容都要放到<f:verbatim>中了,实践表明不是这样的。看下面的例子(只为说明问题):
Copy code
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta. http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%@ include file="/inc/header.jspf" %>
</head>
<body>
<f:view>
<%@ include file="/inc/menu.jspf" %>
<table class="head">
<tr>
<td>欢迎体验“投票管理系统”</td>
</tr>
</table>
<table class="content">
<h:form>
<tr>
<td valign="top">
<table>
<tr>
<td>请选择:</td>
</tr>
</table>
<t:dataTable newspaperColumns="2"id="data" value="#{voteQuestionHandler.demandAuditedDataModel}" var="voteQuestion"
preserveDataModel="false"
rows="#{pagerHandler.pagerVO.rows}"
columnClasses="tdColumn"
rowClasses="tdRow" styleClass="data"
forceIdIndexFormula="#{voteQuestion.id}">
<t:column>
<f:verbatim><li /></f:verbatim>
<t:commandLink value="#{voteQuestion.question}" action="goToVote" target="_blank">
<t:updateActionListener value="#{voteQuestion}" property="#{voteItemHandler.voteQuestionVO}" />
</t:commandLink>
</t:column>
</t:dataTable>
<%@ include file="/inc/pager.jspf" %>
</td>
</tr>
</h:form>
</table>
</f:view>
<%@ include file="/inc/footer.jspf" %>
</body>
</html>
另外,在包含文件(<%@ include...)中,有时是需要<f:verbatim>和<f:subview>标签的,如果你的包含文件不能很好的工作的话,可以试一下!!!由于Myfaces1.1.1之后版本的升级,要求表单标签(如:<h:inputText>)必须要包含在<h:form>标签内,可能<f:view><h:form>这样的写法是最省事的了!!!
<!--[if !supportEmptyParas]--> <!--[endif]-->