Illegal Argument Exception
ali1983 Aug 12, 2008 5:43 PMHello:-
I am having IllegalArgumentException. The binding which I am doing of datascroller with UI fails.
SFSB is
package com.pcounts.server.action.session; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.Vector; import javax.ejb.Remove; import javax.ejb.Stateful; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.Begin; import org.jboss.seam.annotations.Destroy; import org.jboss.seam.annotations.Factory; import org.jboss.seam.annotations.FlushModeType; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.datamodel.DataModel; import org.jboss.seam.annotations.datamodel.DataModelSelection; import org.richfaces.component.UIDatascroller; import com.pcounts.server.action.auth.PCUserInfo; import com.pcounts.server.hibernate.mapping.Contacts; import com.pcounts.server.hibernate.mapping.Groups; import com.pcounts.server.hibernate.service.ContactService; import com.pcounts.server.hibernate.service.GroupService; import com.pcounts.server.hibernate.service.UserService; @SuppressWarnings("unused") @Stateful @Name("dashboardContact") @Scope(ScopeType.SESSION) public class DashboardContactBean implements DashboardContact { @In(create = true) ContactService contactService; @In(create = true) GroupService groupService; @In(create = true) PCUserInfo pcuserInfo; @In(create = true) UserService userService; private UIDatascroller contactsDatascroller; private boolean ascendingOrder; private String orderField; private boolean editable; private Long selectedContactNumber; @DataModel private List<Contacts> lstContacts; @DataModelSelection("lstContacts") Contacts contacts; @SuppressWarnings("unchecked") @Factory(value = "lstContacts") public void listContacts(){ List<Contacts> listSubSetRecords; List<Groups> lstGroups; Set setSPsOfGroups; int pageFirstIndex; Long count; lstGroups = groupService.getGroupsForSP(pcuserInfo.getUserNumber()); // lstGroups = groupService.getGroupsForSP(new Long(12)); setSPsOfGroups = userService.getSPsFromSalesGroups(lstGroups); count = contactService.getContactsRowCount(userService.getCSVUserNumber(setSPsOfGroups)); Vector<Contacts> vector = new Vector(); vector.setSize(count.intValue()); System.out.println("this.getContactsDatascroller: ----------------- " + this.getContactsDatascroller()); System.out.println("this.getContactsDatascroller().getPage(): ----------------- " + this.getContactsDatascroller().getPage()); pageFirstIndex = (this.getContactsDatascroller().getPage() * this.getContactsDatascroller(). getDataTable().getRows()) - this.getContactsDatascroller().getDataTable().getRows(); listSubSetRecords = contactService.getContacts(userService .getCSVUserNumber(setSPsOfGroups), this.getOrderField(),this.isAscendingOrder(),pageFirstIndex); for (int index = 0; index < listSubSetRecords.size(); index++) { vector.set(pageFirstIndex + index, listSubSetRecords.get(index)); } // for (int i = 0; i < vector.size(); i++) { // // System.out.println(vector.get(i).getFirstName()); // } lstContacts = vector; } public void sortAction(String field) { List<Contacts> nullList; this.ascendingOrder = !this.ascendingOrder; this.orderField = field; nullList = this.getLstContacts(); this.getLstContacts().clear(); nullList = null; this.setLstContacts(nullList); } public String editAction(){ System.out.println("Selected contact contact Number : " + contacts.getContactNumber()); return null; } public void nullList(){ this.lstContacts = null; } @Remove @Destroy public void destroy(){ } public UIDatascroller getContactsDatascroller() { return contactsDatascroller; } public void setContactsDatascroller(UIDatascroller contactsDatascroller) { this.contactsDatascroller = contactsDatascroller; } public boolean isAscendingOrder() { return ascendingOrder; } public void setAscendingOrder(boolean ascendingOrder) { this.ascendingOrder = ascendingOrder; } public String getOrderField() { return orderField; } public void setOrderField(String orderField) { this.orderField = orderField; } public List<Contacts> getLstContacts() { return lstContacts; } public void setLstContacts(List<Contacts> lstContacts) { this.lstContacts = lstContacts; } public Long getSelectedContactNumber() { return selectedContactNumber; } public void setSelectedContactNumber(Long selectedContactNumber) { this.selectedContactNumber = selectedContactNumber; } }
and UI Code is
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" xmlns:a="http://richfaces.org/a4j"> <h:form> <table width="100%" border="0"> <tr> <td colspan="3" align="center"><a:commandLink value="Accounts" action="#{salesPersonAccount.gotoAccounts}"></a:commandLink></td> </tr> <tr> <td> <table width="100%"> <tr> <td align="justify"><rich:dataTable id="sp-dash-contacts" value="#{lstContacts}" var="contacts" rows="15"> <rich:column> <f:facet name="header"> <h:outputText value="Edit" /> </f:facet> <s:link action="#{dashboardContact.editAction}"> Edit </s:link> </rich:column> <rich:column> <f:facet name="header"> <a:commandLink action="#{dashboardContact.sortAction('customers.legalName')}" reRender="sp-dash-contacts,con-dashscroller" value="Legal Name"> </a:commandLink> </f:facet> <h:outputText value="#{contacts.customers.legalName}"> </h:outputText> </rich:column> <rich:column> <f:facet name="header"> <a:commandLink action="#{dashboardContact.sortAction('users.firstName')}" reRender="sp-dash-contacts,con-dashscroller" value="Main Contact"> </a:commandLink> </f:facet> <h:outputText value="#{contacts.users.firstName} #{contacts.users.lastName}" /> </rich:column> <rich:column> <f:facet name="header"> <a:commandLink action="#{dashboardContact.sortAction('phone1')}" reRender="sp-dash-contacts,con-dashscroller" value="Phone Number"> </a:commandLink> </f:facet> <h:outputText value="#{contacts.phone1}" /> </rich:column> <rich:column> <f:facet name="header"> <a:commandLink action="#{dashboardContact.sortAction('city')}" reRender="sp-dash-contacts,con-dashscroller" value="City"> </a:commandLink> </f:facet> <h:outputText value="#{contacts.city}" /> </rich:column> </rich:dataTable></td> </tr> <tr> <td align="justify"><rich:datascroller id="con-dashscroller" for="sp-dash-contacts" maxPages="15" binding="#{dashboardContact.contactsDatascroller}" /></td> </tr> </table> </td> <td width="5%"> </td> </tr> </table> </h:form> </ui:composition>
There is no problem with the tags. if i remove the binding then I get null when I try to print out datascroller object on my console.
So please solve my poblem ASAP.
Bye
Muhammad Ali