【问题标题】:My Richfaces 4.0 project won't work with ui:composition tag我的 Richfaces 4.0 项目不适用于 ui:composition 标签
【发布时间】:2011-04-28 11:29:54
【问题描述】:

我的 Richfaces 4.0 项目无法使用 ui:composition 标签。

这是一个 xhtml 文件的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:h="http://java.sun.com/jsf/html"
 xmlns:f="http://java.sun.com/jsf/core"
 xmlns:rich="http://richfaces.org/rich"
 xmlns:a4j="http://richfaces.org/a4j">

  <h:head>
   <title>RichFaces</title>
  </h:head>
  <h:body>
  <ui:composition>
   <h:form>
        <h:selectOneMenu value="#{selectsBean.currentType}"
            valueChangeListener="#{selectsBean.valueChanged}">
            <f:selectItems value="#{selectsBean.firstList}" />
            <a4j:ajax event="valueChange" render="second" execute="@this" />
        </h:selectOneMenu>
        <a4j:outputPanel id="second" layout="block">
            <h:selectOneMenu value="#{selectsBean.currentType}"
                rendered="#{not empty selectsBean.currentType}">
                <f:selectItems value="#{selectsBean.secondList}" />
            </h:selectOneMenu>
        </a4j:outputPanel>
    </h:form>
  </ui:composition>
  </h:body>
</html>

如果我删除 ui:composition 标记,页面可以正常工作,但使用此标记时皮肤不会加载并且 valueChangeListener 不起作用。问题可能出在哪里?

统一更新: Thomas 指出了一个错误,但页面仍然无法正常工作。现在xhtml文件内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
   <h:form>
        <h:selectOneMenu value="#{selectsBean.currentType}"
            valueChangeListener="#{selectsBean.valueChanged}">
            <f:selectItems value="#{selectsBean.firstList}" />
            <a4j:ajax event="valueChange" render="second" execute="@this" />
        </h:selectOneMenu>
        <a4j:outputPanel id="second" layout="block">
            <h:selectOneMenu value="#{selectsBean.currentType}"
                rendered="#{not empty selectsBean.currentType}">
                <f:selectItems value="#{selectsBean.secondList}" />
            </h:selectOneMenu>
        </a4j:outputPanel>
    </h:form>
  </ui:composition>

【问题讨论】:

    标签: java jsf richfaces


    【解决方案1】:

    来自 facelets 文档:Any content outside of the UI Composition tag will be ignored by the Facelets view handler.

    来自官方 JSF2 文档:JSF disregards everything outside of the composition...

    AFAIK &lt;ui:composition&gt; 标签必须是文件中的顶级元素。

    【讨论】:

    • 感谢提供信息,但我更改后问题仍然存在。
    • 你是如何改变它的?请注意,您可以将 xml 命名空间添加到标记中,即 &lt;ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" ...&gt;
    • 您是否还有一个页面,其中包含您使用&lt;ui:include ... /&gt; 的文件?请注意,&lt;ui:composition ...&gt; 通常用于包含在某处的模板,而不是用于独立页面。因此,您还必须使用包装页。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2018-12-30
    • 2022-01-25
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多