【问题标题】:Has anyone seen this h:commandLink behavior?有人见过这种 h:commandLink 行为吗?
【发布时间】:2010-06-03 19:13:09
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: jsf commandlink


    【解决方案1】:

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

    <h:commandLink><h:outputText value="Search" /></h:commandLink>
    

    【讨论】:

    • @Naganalf:这也适用于 JSF 1.0/1.1 吗?我记得它有一些问题。
    • 我不知道。在我们更新到 1.2 之前,我只花了几个月的时间在 1.1 上。
    【解决方案2】:

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

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

    否则您需要将h:outputTextescape 属性设置为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 年前发布的。那是很久以前的事了。

    【讨论】:

      猜你喜欢
      • 2016-09-18
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 2021-12-11
      • 2011-01-07
      • 2019-12-06
      • 1970-01-01
      相关资源
      最近更新 更多