2011-04-28 71 views
1

我的Richfaces 4.0项目不适用于UI:组合标签。我的Richfaces 4.0项目不适用于UI:组合标签

下面是一个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> 

如果我删除用户界面:成分标签,页面可以正常工作,但这个标签皮肤不加载和valueChangeListener不起作用。问题在哪里?

UPD: 托马斯指出了一个错误,但页面仍然不起作用。现在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> 

回答

1

从Facelets的DOC: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的<ui:composition>标签必须是在你的文件中的顶级元素。

+0

感谢您的信息,但我改变后,问题依然存在。 – shurik2533 2011-04-28 11:43:29

+0

你是如何改变这种状况的?请注意,您可以将xml名称空间添加到标记,即''。 – Thomas 2011-04-28 11:48:59

+0

再次看看我的问题。它已更新 – shurik2533 2011-04-28 11:54:12

相关问题