rich:datable don't work when bean have a char based id with
igor_ti Jun 1, 2009 2:19 PMHi,
I use a Bean with an id that is a String with size 6 (it's a char(6) at database), when this id is filled with less then 6 characters the rich datatable component generate a ajax request that doesn't work because it uses the bean id value as row id.
That's an example:
@Entity @Table(name = "ti_oj_nro") public class ObjectInteraction implements java.io.Serializable { private String objId; private String nameObj; @Id @Column(name = "CD_TIP_OBJ_INRO", unique = true, nullable = false, columnDefinition = "char(6)", length = 6) @NotNull @Length(max = 6) public String getobjId() { return this.objId; } public void setobjId(String objId) { this.objId = objId; } @Column(name = "NM_TIP_OBJ_INRO", nullable = false, columnDefinition = "char(30)", length = 30) @NotNull @Length(max = 30) public String getnameObj() { return this.nameObj; } public void setnameObj(String nameObj) { this.nameObj = nameObj; } }
xhtml page code fragment:
<rich:dataTable id="objInteractionList" var="_objInteraction" rows="10" value="#{objInteractionList.dataModel}" rendered="#{objInteractionList.dataModel.rowAvailable}" reRender="datascroller"> <rich:column> <f:facet name="header"> <h:outputText value="Id"/> </f:facet> <h:outputText value="#{_objInteraction['objId']}"/> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Name"/> </f:facet> <h:outputText value="#{_objInteraction['nameObj']}"/> </rich:column> <rich:column id="action" styleClass="action"> <f:facet name="header">action</f:facet> <a4j:commandLink id="btEditar" actionListener="#{objInteractionHome.loadobjInteractionListener}" action="editarobjInteraction" value="Edit"> <f:param id="paramEditar" name="objInteractionobjId" value="#{_objInteraction.objId}"/> </a4j:commandLink> </rich:column> <f:facet name="footer"> <rich:datascroller id="datascroller" rendered="#{objInteractionList.dataModel.rowAvailable}"/> </f:facet> </rich:dataTable>
This code will generate a tag to render a link that execute an Ajax request, for the case when I have the char id with less the 6 characters, this will be generated:
<a onclick="A4J.AJAX.Submit('_viewRoot','mainPage:j_id165',event,{'similarityGroupingId':'mainPage:j_id165:objInteractionList:1 :btEditar','parameters':{'mainPage:j_id165:objInteractionList:1 :btEditar':'mainPage:j_id165:objInteractionList:1 :btEditar','objInteractionCodigoobjInteraction':'1 '} ,'actionUrl':'/mySystem/index.jsf'} );return false;" name="mainPage:j_id165:objInteractionList:1 :btEditar" id="mainPage:j_id165:objInteractionList:1 :btEditar" href="#">Edit</a>
Observe that at this case the Id is equal to 1 and we get a space right after the '1' number wherever the id is used, even if I use trim on my bean property accessors.
Anyone have a clue if it's a limitation, or a bug? Should I do something different?
Regards,
Igor