2013-03-20 21 views
10

Tôi vẫn còn mới đối với SpringMVC (và jstl cho vấn đề đó). Tôi đang cố gắng cư các tùy chọn trong một lựa chọn từ một danh sách các đối tượng. Tôi đã tìm thấy một cách để làm điều đó bằng cách sử dụng c: forEach, nhưng tôi tiếp tục nghĩ rằng đã có một cách để làm cho hình thức: tùy chọn phương pháp làm việc.Biểu mẫu SpringMVC: các thuộc tính tùy chọn các mục: chính xác nó mong đợi là gì?

tôi đã duyệt xung quanh, và về điều gần gũi nhất tôi có thể tìm đến các tài liệu chính thức về các mục thuộc tính là ở đây >>http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.options

Nó nói thuộc tính mục là cho

"Bộ sưu tập , Bản đồ hoặc mảng đối tượng được sử dụng để tạo các thẻ 'tùy chọn' bên trong "

Sự nhầm lẫn của tôi là loại Bộ sưu tập, Bản đồ hoặc mảng đối tượng mà nó đang tìm kiếm. Họ cần định dạng gì? Có phải nó đang tìm kiếm một Bộ sưu tập hay một mảng kiểu chuỗi cụ thể? Tôi có thể sử dụng

List<MyObject> 

và nếu vậy, MyObject sẽ có gì để nó hợp lệ (tức là phương pháp, biến)?

Hiện nay, khi tôi cố gắng sử dụng MyObject, tôi nhận được một ngoại lệ mà nói -

ConverterNotFoundException: Không chuyển đổi phát hiện có khả năng chuyển đổi từ loại com.example.MyObject gõ java.lang.String

Tôi có cần phải thực hiện một công cụ chuyển đổi không? Nó sẽ đi đâu? Làm thế nào mà sẽ làm việc? Tôi đã googled rằng thông báo lỗi và chưa thực sự bật lên bất cứ điều gì cụ thể với những gì tôi đang cố gắng để làm ... (Hầu hết là những kết quả về Roo)

lớp MyObject trông như thế này:

public class MyObject{ 
    private String company; 
    private Customer customer; 
    private Address customerAddress; 

    public String getCompany() { 
     return company; 
    } 

    public void setCompany(String company) { 
     this.company = company; 
    } 

    public Customer getCustomer() { 
     return customer; 
    } 

    public void setCustomer(Customer customer) { 
     this.customer = customer; 
    } 

    public Address getCustomerAddress() { 
     return customerAddress; 
    } 

    public void setCustomerAddress(Address customerAddress) { 
     this.customerAddress = customerAddress; 
    } 
} 

và tôi đang cố gắng để sử dụng nó như vậy:

<form:select path="myObjectList"> 
    <form:option value="0"/> 
    <form:options items="myObjectList" /> 
</form:select> 

có ai biết cụ thể những gì là sai về phương pháp này? Hoặc, tôi có nên sử dụng một số điện thoại

List<String> 

để hoàn thành những gì tôi đang làm?

EDIT đây là stack trace >>http://pastebin.com/2c5XBCmG

Trả lời

20

Spring Documentation nói điều này về thuộc tính items của form:options thẻ:

Thuộc tính mục thường được điền bằng bộ sưu tập hoặc mảng đối tượng mục.itemValue và itemLabel chỉ đơn giản là tham khảo bean thuộc tính của các đối tượng mục đó, nếu được chỉ định; nếu không, các mục các đối tượng sẽ bị xâu chuỗi. Ngoài ra, bạn có thể chỉ định Bản đồ các mục, trong trường hợp này, khóa bản đồ được hiểu là tùy chọn giá trị và giá trị bản đồ tương ứng với nhãn tùy chọn. Nếu itemValue và/hoặc mụcĐồng nhãn cũng được chỉ định, giá trị mục sẽ áp dụng cho khóa bản đồ và thuộc tính nhãn mục sẽ áp dụng cho giá trị bản đồ.

Tóm lại, nếu bạn cần sử dụng Danh sách các Đậu tùy chỉnh làm thuộc tính mục bạn cần sử dụng cũng là thuộc tính itemValueitemLabel. Cá nhân, tôi sẽ thích sử dụng Maps - LinkedHashMap các trường hợp cụ thể - để điền các thẻ đã chọn của tôi, nhưng đó là vấn đề về sở thích.

Thích ứng với một ví dụ từ các tài liệu Spring, mã của bạn sẽ trông như thế này:

<form:select path="commandAttribute"> 
     <form:option value="-" label="--Please Select"/> 
     <form:options items="${countryList}" itemValue="company" itemLabel="company"/> 
</form:select> 

Tôi đang sử dụng thuộc tính company như cả itemValueitemLabel, nhưng bạn tự do lựa chọn các thuộc tính phù hợp Các yêu cầu của bạn.

+0

Được rồi, vì vậy những gì tôi cần là một mụcValue và một mụcLabel. và những thứ tôi có thể lấy từ danh sách đối tượng tôi đã gửi vào, phải không? vì vậy trong trường hợp của tôi: công ty là một chuỗi trong lớp MyObject, và tên là một chuỗi bên trong các lớp khách hàng ... điều này sẽ làm việc trong lý thuyết, nhưng ... tôi vẫn tiếp tục nhận được lỗi đó ... – Hylianux

+0

Lỗi/ngoại lệ bạn đang nhận được? –

+0

Tôi đã đề cập đến nó trong câu hỏi ban đầu, ConverterNotFoundException. Tôi sẽ thêm dấu vết ngăn xếp đầy đủ vào bài đăng gốc, nếu điều đó sẽ hữu ích. Tôi cũng sẽ dán nó ở đây >> http://pastebin.com/2c5XBCmG – Hylianux

1

Thông thường tôi làm việc đó với thẻ mùa xuân như thế này:

<springform:select path="myObjectList" id="selected_company"> 
    <springform:option value="0" label="--- Select One ---"></springform:option> 
    <springform:options items="${myObjectList}" itemValue="company" itemLabel="company"></springform:options> 
</springform:select> 

đừng quên bao gồm việc khai báo không gian tên: xmlns: springform = "http://www.springframework.org/tags/form"

Các vấn đề liên quan