2016-08-25 8 views
0

プロダクション(1年以上)で動作するアプリケーション(JSF 2.2、Primefaces 5.1)があります。今、私はそのアプリをPrimefaces 6.0にアップグレードしていますが、水平のツリーのコンテキストメニューに問題が見つかりました。ノード上でマウスの右ボタンを押すと、間違ったcontextMenu(nodeTypeを使用)が表示され、アクションはPF 5.1のように選択されたノードを取得しません。ツリーの向きを垂直に変更すると、期待通りに機能します。 私はテストプロジェクトを作成し、同じ動作に気付きました。 サンプル・ページ:Primefaces 6. nodeTypeのContextMenu水平のツリーで間違った動作をします。

<?xml version='1.0' encoding='UTF-8' ?> 
<!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:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:p="http://primefaces.org/ui"> 
    <h:head> 
     <title>Facelet Title</title> 
    </h:head> 
    <h:body> 
     <h:form> 
      <h:outputText id="seleccion" value="Valor seleccionado: #{testController.seleccionado.data}"/> 
      <p:tree id="arbol" orientation="horizontal" value="#{testController.raiz}" var="nodo" selectionMode="single" selection="#{testController.seleccionado}"> 
       <p:treeNode type="carpeta" expandedIcon="ui-icon-folder-open" collapsedIcon="ui-icon-folder-collapsed"> 
        #{nodo} 
       </p:treeNode> 
       <p:treeNode type="hoja"> 
        #{nodo} 
       </p:treeNode> 
      </p:tree> 
      <p:contextMenu for="arbol" nodeType="carpeta"> 
       <p:menuitem value="Ver carpeta" update="seleccion"/> 
      </p:contextMenu> 
      <p:contextMenu for="arbol" nodeType="hoja"> 
       <p:menuitem value="Ver hoja" update="seleccion"/> 
      </p:contextMenu> 
     </h:form> 
    </h:body> 
</html> 

サンプル豆:

package test; 

import java.io.Serializable; 
import javax.annotation.PostConstruct; 
import javax.inject.Named; 
import javax.faces.view.ViewScoped; 
import org.primefaces.model.TreeNode; 
import org.primefaces.model.DefaultTreeNode; 

@Named(value = "testController") 
@ViewScoped 
public class TestController implements Serializable { 

    private static final long serialVersionUID = 7028608421091861830L; 

    private TreeNode raiz; 
    private TreeNode seleccionado; 

    public TreeNode getRaiz() { 
     return raiz; 
    } 

    public void setRaiz(TreeNode raiz) { 
     this.raiz = raiz; 
    } 

    public TreeNode getSeleccionado() { 
     return seleccionado; 
    } 

    public void setSeleccionado(TreeNode seleccionado) { 
     this.seleccionado = seleccionado; 
    } 

    public TestController() { 
    } 

    @PostConstruct 
    private void crearArbol() { 
     raiz = new DefaultTreeNode("carpeta", "Origen", null); 
     TreeNode alfa = new DefaultTreeNode("carpeta", "Alfa", raiz); 
     TreeNode beta = new DefaultTreeNode("carpeta", "Beta", raiz); 
     new DefaultTreeNode("hoja", 1, alfa); 
     new DefaultTreeNode("hoja", 2, alfa); 
     new DefaultTreeNode("hoja", 3, beta); 
     new DefaultTreeNode("hoja", 4, beta); 
    } 

} 

がwildlfy 8.2.1および10.0.0の両方を使用して、ChromeとFirefoxで同じ動作をテストしました。 誰かが回避策を知っていますか?私は何か間違っている?

ありがとうございます。

+0

contextMenuが作成されている場所を変更しようとしましたが、これはツリーに含めることを意味していますか? –

+0

あなたの提案を試しても、うまくいかない。次の例外を取得します。java.lang.ClassCastException:org.primefaces.component.contextmenu.ContextMenuをorg.primefaces.component.tree.UITreeNodeにキャストできません。 – GCuevasR

答えて

関連する問題