我有一个非常简单的JSF表单:
<h:form id="simpleSearch">
<h:inputText id="surname" value="#{myBean.surname}" required="true" />
<h:commandLink>Search</h:commandLink>
</h:form>
渲染此页面时,生成的锚点如下所示(为简洁起见,我删除了生成的onclick代码):
Search<a href="#" onclick="..."></a>
如您所见,“搜索”位于锚点之外,锚点主体为空。这对我来说没用。我不能用这个。
是否有任何建议/参考/奇迹可以帮助我修复/了解这里发生的事情?
谢谢!
答案 0 :(得分:4)
您正在混合HTML和JSF组件。这通常不适用于JSP。您希望将“搜索”文本放在h:outputText
组件中:
<h:commandLink><h:outputText value="Search" /></h:commandLink>
答案 1 :(得分:3)
在旧版JSF 1.0 / 1.1中,任何模板文本在 JSF组件树之前呈现。您需要在<f:verbatim>
中包装模板文本以将其置于JSF组件树中。但h:outputText
的使用更为常见,除非它是纯HTML。 E.g。
<f:verbatim><h1>Title</h1></f:verbatim>
否则,您需要将escape
的{{1}}属性设置为false才能避免转义:
h:outputText
在JSF 1.2及更新版本中,使用改进的视图处理程序,您可以只使用模板文本“通常的方式”,它将按照您对编码的期望自动在组件树中进行。
所以,这个问题表明你“仍在”使用旧版JSF 1.0 / 1.1。如果可以的话,我宁愿建议至少升级到JSF 1.2。您可以在任何Servlet 2.4兼容容器上使用它。 JSF 1.2和Servlet 2.4在4年前发布。那是很久以前的事了。