Re: Mutable BasicDynaBean Map

2015-06-22 Thread Ercan Canlıer
This is the jsf page:

p:dataTable editable=true editMode=cell var=data
value=#{tableBean.dynaObjectList} scrollable=true
scrollWidth=100% scrollHeight=100%
p:ajax event=cellEdit immediate=true
listener=#{tableBean.onCellEdit} /
c:forEach items=#{tableBean.columns} var=column
varStatus=loop
p:column sortBy=#{data.map[column.property]}
headerText=#{column.header}
p:cellEditor
f:facet name=input
p:inputText
value=#{data.map[column.property]} /
/f:facet
f:facet name=output
h:outputText
value=#{data.map[column.property]} /
/f:facet
/p:cellEditor
/p:column
/c:forEach
/p:dataTable

Normally, for viewing the data , there is not any restriction.
I added inline editing support to the table and can't set the value.
When i tried LazyDynaMap like mentioned at the wiki, I am only able to add
one data value, because the map has keys with properties.
So if i have a DynaBean list which has properties like firstname, lastname

firstname=Ercan lastname=Canlier
firstname=Ercan2 lastname=Canlier2

Map will include only Ercan2 because the key is firstname for instance.
How can i create Dynamic table from the DynaBeans which will be also
editable?

Wiki information  like below:

*2. LazyDynaMap
http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/org/apache/commons/beanutils/LazyDynaMap.html*
is a *light weight* DynaBean facade to a Map with all the usual *lazy*
features. Its *light weight* because it doesn't have an associated DynaClass
containing all the properties. In fact it actually implements the DynaClass
interface itself (and MutableDynaClass) and derives all the *DynaClass*
information from the actual contents of the Map. A LazyDynaMap can be
created around an existing Map or can instantiate its own Map. After any
DynaBean processing has finished the Map can be retrieved and the DynaBean
*facade* discarded.

If you need a new Map then to use

 DynaBean dynaBean = new LazyDynaMap();// create DynaBean

 dynaBean.set(foo, bar);   // simple
 dynaBean.set(customer, title, Mr);  // mapped
 dynaBean.set(address, 0, addressLine1); // indexed

 Map myMap = dynaBean.getMap() // retrieve the Map


*or* to use with an existing Map 

 Map myMap =  // exisitng Map
 DynaBean dynaBean = new LazyDynaMap(myMap);  // wrap Map in DynaBean
 dynaBean.set(foo, bar);  // set properties





2015-06-22 23:29 GMT+03:00 Oliver Heger oliver.he...@oliver-heger.de:



 Am 22.06.2015 um 21:56 schrieb Ercan Canlıer:
  Hello,
  As i mentioned at the mail subject, i am having problem with not mutable
  map inside BasicDynaBean.
  As far as i know, it is the default behaviour of this map.
  What i would like to do is, simply retrieve the resultset from db which
  will create a list including DynaBeans.
  For viewing the database table, everything works fine, the problem occurs
  when i try to edit it and i get the following exception:
 
  Caused by: javax.el.PropertyNotWritableException
  at javax.el.MapELResolver.setValue(MapELResolver.java:267)
  at
 
 com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
  at
 
 com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
  at com.sun.el.parser.AstValue.setValue(AstValue.java:201)
  at
 com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:291)
  at
 
 com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
  ... 50 more

 This stack trace does not contain a reference to Commons BeanUtils.
 Also, the exception thrown is from the Java expression language (EL),
 not from BeanUtils. It seems to me that there is already a problem in
 your path expression before the DynaBean is actually hit.

 I don't know EL well enough, but could it be the case that it simply
 cannot handle dyna beans?

 Oliver

 
  I assume, this is because of the map inside dyna bean is not mutable.
  I think one option is to change the default behaviour of the map by
 editing
  the source code of BeanUtils library.
  On the other hand, i think the implementors of this library must have
  thought this functionality somehow...
  Below is the code snippet that i use for retrieving the result set as
  DynaBeans.
 
 
  String query = SELECT * FROM test.a;
 
  Statement stmt = (Statement) con.createStatement();
  ResultSet rs = 

Re: Mutable BasicDynaBean Map

2015-06-22 Thread Oliver Heger


Am 22.06.2015 um 21:56 schrieb Ercan Canlıer:
 Hello,
 As i mentioned at the mail subject, i am having problem with not mutable
 map inside BasicDynaBean.
 As far as i know, it is the default behaviour of this map.
 What i would like to do is, simply retrieve the resultset from db which
 will create a list including DynaBeans.
 For viewing the database table, everything works fine, the problem occurs
 when i try to edit it and i get the following exception:
 
 Caused by: javax.el.PropertyNotWritableException
 at javax.el.MapELResolver.setValue(MapELResolver.java:267)
 at
 com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
 at
 com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
 at com.sun.el.parser.AstValue.setValue(AstValue.java:201)
 at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:291)
 at
 com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
 ... 50 more

This stack trace does not contain a reference to Commons BeanUtils.
Also, the exception thrown is from the Java expression language (EL),
not from BeanUtils. It seems to me that there is already a problem in
your path expression before the DynaBean is actually hit.

I don't know EL well enough, but could it be the case that it simply
cannot handle dyna beans?

Oliver

 
 I assume, this is because of the map inside dyna bean is not mutable.
 I think one option is to change the default behaviour of the map by editing
 the source code of BeanUtils library.
 On the other hand, i think the implementors of this library must have
 thought this functionality somehow...
 Below is the code snippet that i use for retrieving the result set as
 DynaBeans.
 
 
 String query = SELECT * FROM test.a;
 
 Statement stmt = (Statement) con.createStatement();
 ResultSet rs = stmt.executeQuery(query);
 RowSetDynaClass rsdc = new RowSetDynaClass(rs);
 
 rs.close();
 stmt.close();
 dynaObjectList= rsdc.getRows();
 
 I tried to use LazyDynaMap as well, editing the table worked fine but the
 Map didnt allow me to put multiple data since the key is not unique for
 other datasets.
 Because the key is the property name.
 
 I would be really appreciated if you suggest me hints.
 Thanks in advance.
 I am really looking forward to see the answers if possible.
 Best regards.
 Ercan CANLIER
 

-
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org



Mutable BasicDynaBean Map

2015-06-22 Thread Ercan Canlıer
Hello,
As i mentioned at the mail subject, i am having problem with not mutable
map inside BasicDynaBean.
As far as i know, it is the default behaviour of this map.
What i would like to do is, simply retrieve the resultset from db which
will create a list including DynaBeans.
For viewing the database table, everything works fine, the problem occurs
when i try to edit it and i get the following exception:

Caused by: javax.el.PropertyNotWritableException
at javax.el.MapELResolver.setValue(MapELResolver.java:267)
at
com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
at
com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
at com.sun.el.parser.AstValue.setValue(AstValue.java:201)
at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:291)
at
com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
... 50 more

I assume, this is because of the map inside dyna bean is not mutable.
I think one option is to change the default behaviour of the map by editing
the source code of BeanUtils library.
On the other hand, i think the implementors of this library must have
thought this functionality somehow...
Below is the code snippet that i use for retrieving the result set as
DynaBeans.


String query = SELECT * FROM test.a;

Statement stmt = (Statement) con.createStatement();
ResultSet rs = stmt.executeQuery(query);
RowSetDynaClass rsdc = new RowSetDynaClass(rs);

rs.close();
stmt.close();
dynaObjectList= rsdc.getRows();

I tried to use LazyDynaMap as well, editing the table worked fine but the
Map didnt allow me to put multiple data since the key is not unique for
other datasets.
Because the key is the property name.

I would be really appreciated if you suggest me hints.
Thanks in advance.
I am really looking forward to see the answers if possible.
Best regards.
Ercan CANLIER