java - Losing modelattribute between methods -
this controller works should
@sessionattributes("giveform") @controller public class giveformcontroller { private persondao personmanager; private keycardmanager database; private giveformvalidator validator; public giveformcontroller() { } @autowired public giveformcontroller(keycardmanager database, persondao personmanager, giveformvalidator validator) { this.database = database; this.validator = validator; this.personmanager = personmanager; } @initbinder protected void initbinder(webdatabinder binder) { binder.setvalidator(getvalidator()); } @requestmapping(value = "/give", method = requestmethod.get) public string give(model model) { giveform giveform = new giveform(); model.addattribute(giveform); return "give"; } @requestmapping(method = requestmethod.post, params = {"continue"}) public string go(@modelattribute("giveform") @valid giveform giveform, bindingresult result, model model, sessionstatus status, httpservletrequest request) { string customer = giveform.getcustomer(); if (!customer.isempty()) { person person = getpersonmanager().findbyuid(customer); if (person != null) { model.addattribute("customername", person.getcn()); model.addattribute("useridactive", person.isactive()); } } if (result.haserrors()) { return "give"; } else { return "give-confirm"; } } @requestmapping(method = requestmethod.post, params = {"cancel"}) public string cancel(@modelattribute("giveform") giveform giveform, sessionstatus status) { status.setcomplete(); return "index"; } @requestmapping(method = requestmethod.post, params = {"ready"}) public string ready(@modelattribute("giveform") giveform giveform, sessionstatus status, httpservletrequest request, model model) { system.out.println(giveform.getkeyid()); status.setcomplete(); model.addattribute(giveform); if(getdatabase().insertgive(giveform, request.getremoteuser())) { return "success"; } else { return "operationfailed"; } }
but returns null when getting modelattribute ready-method:
@sessionattributes("takeform") @controller public class xxtakeformcontroller { private takeformvalidator validator; private keycardmanager database; private persondao ldap; public xxtakeformcontroller(){ } @autowired public xxtakeformcontroller(takeformvalidator validator, keycardmanager database, persondao ldap) { this.database = database; this.validator = validator; this.ldap = ldap; } @initbinder protected void initbinder(webdatabinder binder) { binder.setvalidator(getvalidator()); } @requestmapping(value = "/take", method = requestmethod.get) public string take(model model) { takeform takeform = new takeform(); model.addattribute(takeform); return "take"; } @requestmapping(method = requestmethod.post, params = {"continue"}) public string go(@modelattribute("takeform") @valid takeform takeform, bindingresult result, model model, sessionstatus status) { if (result.haserrors()) { return "take"; } else { string criteria = takeform.getcriteria(); if (character.isdigit(criteria.charat(0))) { // criteria keyid string customer = getdatabase().getholderof(criteria); takeform.setcustomer(customer); person person = getldap().findbyuid(customer); if (person != null) { model.addattribute("customername", person.getcn()); } model.addattribute("customer", customer); list keys = new arraylist(); keys.add(getdatabase().getkey(criteria)); model.addattribute("keys", keys); } else { // criteria userid takeform.setcustomer(criteria); model.addattribute("customer", criteria); model.addattribute("customername", getldap().findbyuid(criteria).getcn()); model.addattribute("keys", getdatabase().getkeysof(criteria)); } } return "take-confirm"; } @requestmapping(method = requestmethod.post, params = {"cancel"}) public string cancel(@modelattribute("takeform") takeform takeform, sessionstatus status) { status.setcomplete(); return "index"; } @requestmapping(method = requestmethod.post, params = {"ready"}) public string ready(@modelattribute("takeform") takeform takeform, sessionstatus status, httpservletrequest request,model model) { status.setcomplete(); model.addattribute(takeform); system.out.println(takeform.getkeyid()); if(getdatabase().executetake(takeform.getkeyid(), request.getremoteuser(), takeform.getnotes())){ return "success"; } else { return "operationfailed"; } }
it i'm blind to. both ready-methods return same simple view. can borrow eyes me? :)
model.addattribute("key","value");
it used set data model in controller. data retrieved in jsp file directly using key name ${key}
data, added model accessed in jsp file directly using ${name}
.
Comments
Post a Comment