1

我有一个非常简单的 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>

如您所见,“搜索”在锚点之外,锚点主体为空。这对我没用。我不能用这个。

是否有任何建议/参考/奇迹可以帮助我修复/了解这里发生的事情?

谢谢!

4

2 回答 2

4

您正在混合 HTML 和 JSF 组件。这通常不适用于 JSP。您想将“搜索”文本放入h:outputText组件中:

<h:commandLink><h:outputText value="Search" /></h:commandLink>
于 2010-06-03T19:15:52.347 回答
3

在旧版 JSF 1.0/1.1 中,任何模板文本都在JSF 组件树之前呈现。您需要包装模板文本<f:verbatim>以将其放入 JSF 组件树中。但使用的h:outputText更为普遍,除非它是纯 HTML。例如

<f:verbatim><h1>Title</h1></f:verbatim>

否则,您需要将escape属性设置h:outputText为 false 以避免它被转义:

<h:outputText value="<h1>Title</h1>" escape="false" />

在 JSF 1.2 和更新版本中,通过改进的视图处理程序,您可以“按常规方式”使用模板文本,它将按照您对编码的期望方式自动在组件树中采用。

因此,这个问题表明您“仍在”使用旧版 JSF 1.0/1.1。如果可以的话,我宁愿建议至少升级到JSF 1.2。你可以让它在任何 Servlet 2.4 兼容的容器上工作。JSF 1.2 和 Servlet 2.4 是在 4 年前发布的。那是很久以前的事了。

于 2010-06-03T20:20:14.260 回答