2014-12-23 4 views
0

Не могли бы вы дать мне представление о том, что не так с кодом? Я пытаюсь выполнить итерацию по списку объектов в выборе весны mvc. Результатом должна быть конкатенация двух бинов, которые извлекаются через getDisplayName(). Но результат этого метода в jsp выглядит как результат toString() - [email protected] Благодарим вас за помощь. Код ниже:Весенняя форма: выберите кошек как toString

.jsp

<body> 
    <form:form action="newclientpage" method="post" modelAttribute="client"> 
     <div id="client-buttons"> 
      <input type="button" name="client-action" value="Add Client"> 
      <input type="button" name="client-action" value="Del Client"> 
      <input type="button" name="client-action" value="Edit Client"> 
      <input type="button" name="client-action" value="Show client details"> 
     </div> 
     <form:select path="displayName" items="${listOfClients}" size="25" width="200px"/> 
    </form:form> 
</body> 

Контроллер

@RequestMapping(value = "/", method = RequestMethod.GET) 
    public String initNewClientForm(ModelMap model) { 
     Client client = new Client(); 
     List<Client> listOfClients = clientService.getListOfClients(); 
     model.addAttribute("client", client); 
     model.addAttribute("listOfClients", listOfClients); 
     return "clientpage"; 
    } 

Bean

@Entity 
@Table(name = "client") 
public class Client extends BaseEntity { 

    @Column(name = "first_name", nullable = false) 
    private String firstName; 

    @Column(name = "last_name", nullable = false) 
    private String lastName; 

    @Column(name = "address", nullable = false) 
    private String address; 

    @Column(name = "city", nullable = false) 
    private String city; 

    @Column(name = "postal_code", nullable = false) 
    private String postalCode; 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    public String getPostalCode() { 
     return postalCode; 
    } 

    public void setPostalCode(String postalCode) { 
     this.postalCode = postalCode; 
    } 

    public String getDisplayName() { 
     return firstName + " " + lastName; 
    } 
} 
+0

Вы не перегрузить ToString() в клиенте? –

+0

Нет. Но зачем мне это делать? Почему метод возвращает строковое представление Client-объекта? – aime

ответ

1

Вы можете добавить свой список так:

<form:select path="displayName"> 
    <form:options items="${listOfClients}" itemValue="displayName" itemLabel="displayName" /> 
</form:select> 
+0

Спасибо! Но почему в моем случае метод действует как toString()? – aime

+0

По умолчанию он ожидает строковое значение, и поскольку вы не предоставили никаких попыток конвертировать объект в строку, я думаю. – Ghokun

+0

Я получил это. Спасибо. – aime

1

Вам нужно перебирать через свой список Клиентов и создайте новый список, который содержит только отображаемое имя, а затем используйте этот список для вашего выбора в файле jsp.

List<String> displayNames = new ArrayList<String>(); 
for(Client c : listOfClients) 
    displayNames.add(c.getDisplayName()); 
model.addAttribute("listOfDisplayNames", displayNames); 
+0

Да, это тоже работает. Но я искал более элегантный способ сделать это. В любом случае, благодарю Вас. – aime

Смежные вопросы