0 Replies Latest reply on Aug 20, 2009 11:52 PM by Krzysiek Niewidoczny

    Problem with outjecting object

    Krzysiek Niewidoczny Newbie

      Hi everybody,


      I've seam component named resultsAction in which I use @In and @Out annotations I have entity B_property as well.
      When I selected one row from properties list on the page I've exception like this:


      Caused by: java.lang.IllegalArgumentException: Could not set field value by reflection: ResultsAction.activeProperty
      on: pl.skoropada.components.ResultsAction with value: class [Ljava.lang.Object;
      



      I've found temporary solution for this by changing type of activeProperty to Object but I don't know where the reason is.




      Here is my component:


      @Name(value = "resultsAction")
      @Scope(ScopeType.SESSION)
      public class ResultsAction {
      ...
        @In(required = false)
        private Bn_property property;
      
        @DataModel
        private List<Bn_property> properties;
      
        @DataModelSelection
        @Out(required = false)
        private Bn_property activeProperty;
      ...
      



      and here is part of my xhtml's file (results.xhtml):




      <rich:dataList var="prop" value="#{properties}">
           <h:column>#{prop[3]}  </h:column>
           <h:column>#{prop[3]}  </h:column>
           <h:column><h:commandLink action="#{resultsAction.view}" value="#{prop[4]}" /></h:column>
      </rich:dataList>
      



      The second question (less important right now) is why I have to refer to prop[n], where n belongs to 0..N instead of prop.name ?
      When I changed to getter's style I had exception like this one;



       Caused by: javax.faces.FacesException: javax.el.ELException: /UC0001/results.xhtml: For input string: "id"
      



      so I have to use prop[0] for example.


      Entity class here:


      @Name(value = "property")
      public class Bn_property implements Serializable {
           private static final long serialVersionUID = 1L;
      
           @Id
           @GeneratedValue(strategy=GenerationType.AUTO)
           @Column(unique=true, nullable=false)
           private int id;
      
               public int getId() {
                return this.id;
           }
      
           public void setId(int id) {
                this.id = id;
           }
      
           private String name;
      
               public String getName() {
                return this.name;
           }
      
           public void setName(String name) {
                this.name = name;
           }
      



      Can you help me with this ?