简体   繁体   中英

implicit QueryStringBindable java.util.List[models.InputTimeSheetDataStore]

Hi i am trying to pass a list of objects of type models.InputTimeSheetDataStore from view to application.java and i am getting No QueryString binder found for type java.util.List[models.InputTimeSheetDataStore]. Try to implement an implicit QueryStringBindable for this type No QueryString binder found for type java.util.List[models.InputTimeSheetDataStore]. Try to implement an implicit QueryStringBindable for this type error

in application.java i am passing list of object to view

InputTimeSheetDataStore ITSDS= new InputTimeSheetDataStore();
            ITSDS.ConsultantName=EmployeeFilter;
            ITSDS.Client=ClientFilter;
            ITSDS.Project=ProjectFilter;
            ITSDS.Role=EmployeeRoleFilter;
            ITSDS.Task=Task;
            ITSDS.TimeSheetDate=TimeSheetDate;
            ITSDS.Hours=TaskHours;
            ITSDS.IsBilled=IsBilled;
            ITSDS.Workplace=WorkPlace;
            InputTimeSheetList.add(ITSDS);
            return ok(TimeSheetInput.render(Consultant.PopulateConsultant(),Client.PopulateClient(),Project.PopulateProject(ClientFilter),
                    Consultant.PopulateConsultantRole(),Consultant.ConsultantRoleRate(EmployeeRoleFilter),InputTimeSheetList));

in view i am passing that object back to application.java

@(EmployeeList:java.util.List[String],ClientList:java.util.List[String],
  ProjectList:java.util.List[String],EmployeeRoleList: java.util.List[String],Rate:String,
  CurrentPage:List[InputTimeSheetDataStore])

  <form id="TimeSheetEntryForm" name="TimeSheetEntryForm" action="@{routes.Application.save("name","name","name","name","name","name","name","name","name",CurrentPage)}" method="GET">
<code.....>

here is my class file

InputTimeSheetDataStore.java

package models;


public class InputTimeSheetDataStore {

    public String ConsultantName;
    public String Client;
    public String Project;
    public String Role;
    public String Task;
    public String TimeSheetDate;
    public String Hours;
    public String IsBilled;
    public String Workplace;

    public String  getConsultantName(){
        return this.ConsultantName;
    }
    public String  getClient(){
        return this.Client;
    }
    public String  getProject(){
        return this.Project;
    }
    public String  getRole(){
        return this.Role;
    }
    public String  getTask(){
        return this.Task;
    }
    public String  getTimeSheetDate(){
        return this.TimeSheetDate;
    }
    public String  getHours(){
        return this.Hours;
    }
    public String  getIsBilled(){
        return this.IsBilled;
    }
    public String  getWorkPlace(){
        return this.Workplace;
    }

}

my routes is

GET     /Application/save            controllers.Application.save(EmployeeFilter:String,ClientFilter:String,ProjectFilter:String, EmployeeRoleFilter:String,Task:String,TaskHours:String,TimeSheetDate:String,IsBilled:String,WorkPlace:String,CurrentPage:java.util.List[models.InputTimeSheetDataStore])

can someone help me with the implicit querybinder of type InputTimeSheetDataStore

Thanks in advance

Hi this is the example implementation of QueryStringbindable:

    public class InputTimeSheetDataStore implements QueryStringBindable<InputTimeSheetDataStore> {

      public String consultantName, client, project;

      @Override
      public Optional bind(String key, Map data) {
        if (data.containsKey("consultantName")) {
            this. consultantName = data.get("consultantName").toString();
        }

        if (data.containsKey("client")) {
            this.client = data.get("client").toString();
        }

        if (data.containsKey("project")) {
            this.project = data.get("project").toString();
        }

        return Optional.of(this);
      }

      @Override
      public String unbind(String key) {
        return null;
      }

      @Override
      public String javascriptUnbind() {
        return null;
      }
   }

Extra tips for you, when writing a programming language, make sure you are following the code convention. For example: the convention in Java syntax you must write variable with lower case for the first character;

public String ConsultantName; // this is wrong
public String consultantName; //this is right

Hope it helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM