2012-01-09 26 views
9

Tôi có một DropDownChoice như dưới đây:Trong Wicket DropDownChoice làm thế nào bạn có thể thay thế "Choose one" khác văn bản

final DropDownChoice<Term> terms = new DropDownChoice("terms", new Model<Term>(), new Model(new ArrayList(termDao.findAll())), new IChoiceRenderer<Term>() { 
     public Object getDisplayValue(Term object) { 
      return object.getIdentifier(); 
     } 

     public String getIdValue(Term object, int index) { 
      return object.getId().toString(); 
     } 
    }); 

Tôi muốn có "Chọn tất cả" thay vì "Choose one". Làm thế nào tôi có thể làm điều đó?

+1

FYI bạn có thể thêm đó làm câu trả lời cho câu hỏi của riêng bạn và chấp nhận câu trả lời để nhận tín dụng cho câu hỏi – schmimd04

Trả lời

6
  1. Đặt một id đánh dấu cho DropDownChoice của bạn .: terms.setMarkupId("termsDDC");

  2. Tạo một file .properties cho/bảng/trang mẫu của bạn. Ví dụ: mypanel.properties

  3. Trong tập tin bất động sản ghi: termsDDC.null=Choose All

Ref: https://cwiki.apache.org/WICKET/dropdownchoice.html

8

Tôi cố gắng gợi ý Goli dưới wicket 6.4 và nó không hoạt động. Đối với tôi đúng cách là:

  1. Không cần thiết đặt terms.setMarkupId ("termsDDC"); Nó sẽ hoạt động mà không có nó

  2. Chính xác như trên, nếu bạn có biểu mẫu trên bảng điều khiển (wicket: id = "form") và DropDownChoice trên biểu mẫu (wicket: id = "terms"), it doesn ' t vấn đề, bạn nên đặt tên tệp .properties là mypanel.properties

  3. Trong tệp thuộc tính viết: form.terms.null = Chọn tất cả hoặc form.terms.nullValid = trống, nếu trình đơn thả xuống đã thiết lậpNullValid (đúng)

+0

Đây là giải pháp đúng. –

6

Tôi đang sử dụng wicket 6.14 (không chắc chắn phiên bản nào đã được giới thiệu) và bạn chỉ có thể ghi đè getNullKeyDisplayValue(), vì vậy bạn sẽ có điều này:

final DropDownChoice<Term> terms = new DropDownChoice("terms", new Model<Term>(), new Model(new ArrayList(termDao.findAll())), new IChoiceRenderer<Term>() { 
    @Override 
    protected String getNullKeyDisplayValue() { 
     return "Choose All"; 
    } 

    public Object getDisplayValue(Term object) { 
     return object.getIdentifier(); 
    } 

    public String getIdValue(Term object, int index) { 
     return object.getId().toString(); 
    } 
}); 
+0

Tôi đã chỉnh sửa để làm cho câu trả lời rõ ràng hơn – Andy

0

tôi đã sử dụng hai phương pháp:

AbstractSingleSelectChoice # getNullKeyDisplayValue(), AbstractSingleSelectChoice # getNullValidDisplayValue()

đó đều truy cập thông qua DropDownChoice

@Override 
protected String getNullKeyDisplayValue() { 
    return "Choose All"; 
} 

và nếu DropDownChoice có đã setNullValid (đúng) phương thức:

 @Override 
    protected String getNullValidDisplayValue() { 
     return "Choose All"; 
    } 
0

Trong các phiên bản Wicket cũ (có lẽ cũng làm việc trong các phiên bản mới hơn), bạn có thể làm như sau (thử nghiệm trong Wicket 1.3.7):

Dropdownchoice dropdown = new DropDownChoice("dropdown", list) 
{ 
    @Override 
    protected CharSequence getDefaultChoice(Object selected) 
    { 
     return "<option value=\"\">" + "MY placeholder text" + "</option>"; 
    } 
}; 
dropdown.setNullValid(true); 

Có lẽ bạn muốn thêm thứ bổ sung cho các tùy chọn-tag tùy trên đối tượng "đã chọn". Hãy xem phương thức super.getDefaultChoice (Object selected) để thực hiện mặc định.

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