2016-02-29 3 views
-1

Я использую PrimeFaces 5.0 и хочу создать <p:treeTable> внутри всплывающее окно после того, как событие щелчка, но его показ следующим сообщения об ошибкеManagedBean не объявляет публичный конструктора без аргументов

Невозможно создать управляемый компонент popupTreeTableManagedBean. Были найдены следующие проблемы : - Управляемый компонент bean beans.PopupTreeTableManagedBean для управляемого bean popupTreeTableManagedBean не объявляет публичный аргумент без аргумента . - Управляемый bean-класс beans.PopupTreeTableManagedBean для управляемый bean-компонент popupTreeTableManagedBean не объявляет публичный конструктор без аргументов.

Вот мой фрагменты кода

index.xhtml:

<p:dialog header="" widgetVar="dlg1" minHeight="200"> 
    <p:treeTable value="#{popupTreeTableManagedBean.root}" var="node" style="" > 
     <p:column> 
      <f:facet name="header">Name</f:facet> 
      <h:outputText value="#{node.name}"></h:outputText> 
     </p:column> 

     <p:column> 
      <f:facet name="header">Value</f:facet> 
      <h:inputText value="#{node.value}" style="border-style: hidden;"/> 
     </p:column> 
    </p:treeTable> 
</p:dialog> 

PopupTreeTableManagedBean.java

@ManagedBean 
@SessionScoped 
public class PopupTreeTableManagedBean { 

    private TreeNode root = new DefaultTreeNode("Root Node", null); 
    List<String> selectedParams; 
    TreeNode scanParamsRoot = null; 

    PopupTreeTableManagedBean() { 
     selectedParams = GenrateScanList.getParamList(); 
     createRootAndLeafNodes(); 
    } 

    private TreeNode createRootAndLeafNodes() { 
     TreeNode scanSubRoot = null; 
     int size = selectedParams.size(); 
     TreeNode scanRoot = new DefaultTreeNode(new Document("scanParams", ""), this.root); 
     scanSubRoot = new DefaultTreeNode(new Document("Sub Root", ""), scanRoot); 

     Document relationshipValue = new Document("Hi", ""); 
     TreeNode documentss06 = new DefaultTreeNode(relationshipValue, scanSubRoot); 
     return root; 
    } 

    private DefaultTreeNode getTreeNodeObject() { 
     return new DefaultTreeNode(); 
    } 

    private Document getDocumentObject() { 
     return new Document(null, null); 
    } 

    public TreeNode getRoot() { 
     return root; 
    } 

    public void setRoot(TreeNode root) { 
     this.root = root; 
    } 
} 
+3

Какая часть сообщения об ошибке вы не понимаете? – EJP

ответ

4

Сообщение об ошибке говорит, что вам нужен public конструктор, но ваш конструктор упаковка частный. Добавление ключевого слова public должно помочь.

+0

Кроме того, этот конструктор следует заменить на метод '@ PostConstruct'. – Geinmachi

+0

Инициализация в bean-конструкторе совершенно законна, если она не зависит от инъекций зависимостей. – Tiny

Смежные вопросы