Uploaded image for project: 'Tools (JBoss Tools)'
  1. Tools (JBoss Tools)
  2. JBIDE-12614

Code completion on item with h:dataTable fails if value point on datamodel object

XMLWordPrintable

    • Hide

      create class MyClass

      public class MyClass {
      	public MyClass() {
      	}
      
      	public MyClass(String n) {
      		setName(n);
      	}
      
      	String name;
      
      	public String getName() {
      		return name;
      	}
      
      	public void setName(String n) {
      		this.name = n;
      	}
      }
      

      and bean class

      import java.util.ArrayList;
      import java.util.List;
      
      import javax.faces.bean.ManagedBean;
      import javax.faces.bean.SessionScoped;
      import javax.faces.model.DataModel;
      import javax.faces.model.ListDataModel;
      
      @ManagedBean
      @SessionScoped
      public class MyBean {
      	public DataModel<MyClass> getListDM() {
      		return new ListDataModel<MyClass>(getList());
      	}
      
      	public List<MyClass> getList() {
      		List<MyClass> res = new ArrayList<MyClass>();
      		res.add(new MyClass("a"));
      		res.add(new MyClass("b"));
      		res.add(new MyClass("c"));
      		return res;
      	}
      }
      

      and use xhtml code

      <h:dataTable var="item" value="#{myBean.listDM}">
       <h:column>
          <h:outputText
      	value="#{item.name}" />
       </h:column>
      </h:dataTable>
      
      Show
      create class MyClass public class MyClass { public MyClass() { } public MyClass( String n) { setName(n); } String name; public String getName() { return name; } public void setName( String n) { this .name = n; } } and bean class import java.util.ArrayList; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; @ManagedBean @SessionScoped public class MyBean { public DataModel<MyClass> getListDM() { return new ListDataModel<MyClass>(getList()); } public List<MyClass> getList() { List<MyClass> res = new ArrayList<MyClass>(); res.add( new MyClass( "a" )); res.add( new MyClass( "b" )); res.add( new MyClass( "c" )); return res; } } and use xhtml code <h:dataTable var = "item" value= "#{myBean.listDM}" > <h:column> <h:outputText value= "#{item.name}" /> </h:column> </h:dataTable>

      When using data model object (eg. javax.faces.model.ListDataModel<MyClass> - bean.listDM) and h:dataTable (or rich:dataTable) Eclipse warns me on item presentation #{item.name) '"name" cannot be resolved'.

      <h:dataTable var="item" value="#{myBean.listDM}">
       <h:column>
          <h:outputText
      	value="#{item.name}" />
       </h:column>
      </h:dataTable>
      

      If I change bean.listDM on bean.list (java.util.List<MyClass>), then no warning is displayed.

      After deployment both of version works fine.

            alexeykazakov Alexey Kazakov
            p.bezpalko_jira Piotr Bezpalko (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: