2011-04-26 78 views
0

我正在使用JSF Mojarra 2.0.3實現以及Apache Trinidad 2.0.0 beta框架,以便我可以使用樹組件。JSF特立尼達樹組件不擴展

我跟着developers guide關於樹組件,以及Oracle ADF tutorial,但我沒有成功地複製Oracle示例。

樹組件獲取呈現,但它不展開/摺疊。我只能看到根元素。

apache demo tree component,我注意到該頁面沒有重新加載。它似乎是阿賈克斯管理。

所以我認爲我的問題是我有我的樹組件到表單JSF標記。無論如何,如果我不把樹組件放到h:form標籤中,樹組件不會被渲染。

將樹組件嵌入到表單中後,我也注意到當我嘗試從樹中展開節點時,整個頁面都會重新加載。這可以解釋爲什麼樹沒有擴大。

任何人都有關於特立尼達樹組件的線索?

順便說一句,樹組件是我使用的唯一的Trinidad組件。我不知道它是否與JSF Mojarra的實現默認組件不兼容。

仍然不起作用。用根元素呈現的樹,但用鼠標點擊時不會展開。現在只有一個和標籤在最終的html文檔中。在這裏我XHTML的:

header.xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
       xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <div id="header" class="header"> 
     <div id="header_title"> 
      <p>#{msg.app_title}</p> 
     </div> 
     <div id="clear"/> 
    </div> 

</ui:composition> 

footer.xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
       xmlns:ui="http://java.sun.com/jsf/facelets"> 

      <div id="footer" class="footer">#{msg.app_footer}</div> 

</ui:composition> 

所引用:

<tr:document xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:tr="http://myfaces.apache.org/trinidad" 
     title="#{msg.app_title}"> 

    <div id="header"> 
     <ui:include src="/WEB-INF/templates/header.xhtml"/> 
    </div> 

    <center> 
    <div id="content"> 
     <ui:insert name="content"> 
     </ui:insert> 
    </div> 
    </center> 

    <div id="footer"> 
     <ui:include src="/WEB-INF/templates/footer.xhtml"/> 
    </div> 
</tr:document> 

login.xhtml:

<ui:composition template="/WEB-INF/templates/template.xhtml" 
         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:tr="http://myfaces.apache.org/trinidad"> 

    <ui:define name="content"> 
     <tr:form id="login_form"> 
      <h:panelGrid columns="3"> 
       <h:outputText value="#{msg.username}"></h:outputText> 
       <h:inputText id="username" value="#{loginBean.username}" required="true"/> 
       <h:message for="username" class="error_message"/> 

       <h:outputText value="#{msg.password}"></h:outputText> 
       <h:inputSecret id="password" value="#{loginBean.password}" required="true"> 
        <f:validator validatorId="checkUserValidator"/> 
        <f:attribute name="usernameId" value="username"/> 
       </h:inputSecret> 

       <h:message for="password" class="error_message"/> 
      </h:panelGrid> 
      <h:commandButton value="#{msg.login}" action="#{loginBean.checkUser}"/> 

      <tr:panelBox background="transparent">   
       <tr:tree var="menu" value="#{testTree.tree}"> 
        <f:facet name="nodeStamp"> 
         <tr:goLink text="#{menu.name}"/> 
        </f:facet> 
       </tr:tree> 
       </tr:panelBox> 

     </tr:form> 
     <h:outputLink value="/MyApp/faces/newAccount.xhtml"> 
      <h:outputText value="#{msg.create_account}"></h:outputText> 
     </h:outputLink> 
    </ui:define> 
</ui:composition> 

TestTree.java:

公共類TestTree {

private TreeModel tree; 


public TestTree(){ 

    Person john = new Person("John Smith"); 
    Person kim = new Person("Kim Smith"); 
    Person tom = new Person("Tom Smith"); 
    Person ira = new Person("Ira Wickrememsinghe"); 
    Person mallika = new Person("Mallika Wickremesinghe"); 

    john.getKids().add(kim); 
    john.getKids().add(tom); 
    ira.getKids().add(mallika); 

    // create the list of root nodes: 
    List people = new ArrayList(); 
    people.add(john); 
    people.add(ira); 

    tree = new ChildPropertyTreeModel(people, "kids"); 
} 

public TreeModel getTree(){ 
    return tree; 
} 

public void setTree(TreeModel tree){ 
    this.tree = tree; 
} 

}


使用這種情況的另一個問題,我應該在哪裏指定我的css文件?我還沒有找到文檔標籤的任何屬性。我如何訪問和特立尼達生成的標籤?

回答

0

我在jsf1.2上使用了特立尼達樹組件(trinidad 1.2.14),沒有任何問題。我不知道特立尼達是如何與mojarra實施一起工作的。

我的網站這個樣子的,如Tag Documentation描述:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 
<%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr" %> 
<%@ taglib uri="http://myfaces.apache.org/trinidad/html" prefix="trh" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 

<f:view> 

<tr:document> 
<tr:form id="frmMain"> 
    <tr:panelBox background="transparent">   
    <tr:tree var="menu" value="#{myBean.model}"> 
     <f:facet name="nodeStamp"> 
      <tr:goLink 
       text="#{menu.label}" 
       destination="#{menu.address}" 
       targetFrame="Data"/> 
     </f:facet> 
    </tr:tree> 
    </tr:panelBox> 
</tr:form> 
</tr:document> 
</f:view> 

也許這可以幫助您縮小問題。

+0

你能告訴我你是如何指定你的身體和html標籤?我已將它們指定爲「和」。這可能是問題嗎?關鍵是,遵循不同的JSF教程,我總是看到他們通常使用這種標籤,而不是「」標籤。 – David 2011-04-27 12:17:01

+0

嗨,我編輯了我的答案。這是我的頁面的整個代碼。特立尼達的標籤生成。有關tr:文檔,請參閱Trinidad標籤文檔。是的,這可能是你的問題。嘗試一個僅包含特立尼達東西的簡單頁面,看看你的樹是否像預期的那樣工作。 – lkdg 2011-04-27 12:36:06

+0

我不太瞭解你的例子。我認爲這不是一個標準的xhtml網頁,是嗎?我在哪裏可以定義我的CSS和JavaScript資源?我沒有看到此任務的任何適當的文檔屬性。 – David 2011-04-27 15:36:34