在Wicket DropDownChoice中,您如何替换;选择一个“;到另一个文本

在Wicket DropDownChoice中,您如何替换;选择一个“;到另一个文本,wicket,default-value,dropdownchoice,Wicket,Default Value,Dropdownchoice,我有一个下拉选择,如下所示: final DropDownChoice<Term> terms = new DropDownChoice("terms", new Model<Term>(), new Model(new ArrayList(termDao.findAll())), new IChoiceRenderer<Term>() { public Object getDisplayValue(Term object) {

我有一个下拉选择,如下所示:

    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();
        }
    });
final-dropdownthoice terms=new-dropdownthoice(“terms”、new-Model()、new-Model(new-ArrayList(termDao.findAll())、new-ichoicerender()){
公共对象getDisplayValue(术语对象){
返回object.getIdentifier();
}
公共字符串getIdValue(术语对象,int索引){
返回object.getId().toString();
}
});
我想要“全选”而不是“选一”。我该怎么做

  • 为下拉选项设置标记id.:
    terms.setMarkupId(“termsDDC”)

  • 为表单/面板/页面创建
    .properties
    文件。例如:
    mypanel.properties

  • 在属性文件中写入:
    termsDDC.null=选择全部


  • 参考资料:

    我在wicket 6.4中尝试了Goli的建议,但没有成功。对我来说,正确的方法是:

  • 不需要设置术语。setMarkupId(“termsDDC”);没有它它也行

  • 如上所述,如果您在面板上有一个表单(wicket:id=“form”)和表单上有一个下拉选项(wicket:id=“terms”),则无所谓,您应该将.properties文件命名为mypanel.properties

  • 在属性文件中写入:form.terms.null=选择全部或form.terms.nullValid=空,如果下拉列表设置了setNullValid(true)

  • 我使用的是wicket 6.14(不确定引入了哪个版本),您只需覆盖
    getNullKeyDisplayValue()
    ,就可以实现以下功能:

    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();
        }
    });
    
    final-dropdownthoice terms=new-dropdownthoice(“terms”、new-Model()、new-Model(new-ArrayList(termDao.findAll())、new-ichoicerender()){
    @凌驾
    受保护的字符串getNullKeyDisplayValue(){
    返回“全选”;
    }
    公共对象getDisplayValue(术语对象){
    返回object.getIdentifier();
    }
    公共字符串getIdValue(术语对象,int索引){
    返回object.getId().toString();
    }
    });
    
    我使用了两种方法:

    AbstractSingleSelectChoice#getNullKeyDisplayValue(),AbstractSingleSelectChoice#getNullValidDisplayValue()

    都可以通过DropDownChoice访问

     @Override
     protected String getNullKeyDisplayValue() {
        return "Choose All";
     }
    
    如果DropDownChoice具有setNullValid(true),则该方法:

         @Override
         protected String getNullValidDisplayValue() {
            return "Choose All";
         }
    
    在较早的Wicket版本中(可能也适用于较新的版本),您可以执行以下操作(在Wicket 1.3.7中测试):

    Dropdownchoice dropdown=新的Dropdownchoice(“dropdown”,列表)
    {
    @凌驾
    受保护的CharSequence getDefaultChoice(选定对象)
    {
    返回“+”我的占位符文本“+”;
    }
    };
    下拉列表。setNullValid(true);
    

    可能您希望根据“选定”对象向选项标记添加其他内容。查看默认实现的super.getDefaultChoice(Object selected)方法。

    FYI您可以将其添加为您自己问题的答案,并接受它以获得积分
    Dropdownchoice dropdown = new DropDownChoice("dropdown", list)
    {
        @Override
        protected CharSequence getDefaultChoice(Object selected)
        {
            return "<option value=\"\">" + "MY placeholder text" + "</option>";
        }
    };
    dropdown.setNullValid(true);