当值为“时,Apache Wicket DropdownChoice默认值问题”-1“;

当值为“时,Apache Wicket DropdownChoice默认值问题”-1“;,wicket,Wicket,我正在使用Ichoicerenderer的重写类来显示列表中的值 下拉列表 cfrList是从数据库填充的列表。它是类型为“CfrInfo”的列表。 CfrInfo有getCfrSubRule()和getCfrShortDesc()方法。 问题是,当我的getCfrSubRule()方法返回-1时,默认值为。 在正常情况下,默认情况下,当页面加载时,我的下拉列表显示“选择一个”。 但是当我的列表的值为“-1”时,它总是显示“-1”作为默认值,而不是“选择一个” 任何帮助都将不胜感激。谢谢你 请参

我正在使用Ichoicerenderer的重写类来显示列表中的值 下拉列表

cfrList是从数据库填充的列表。它是类型为“CfrInfo”的列表。 CfrInfo有getCfrSubRule()和getCfrShortDesc()方法。 问题是,当我的getCfrSubRule()方法返回-1时,默认值为。 在正常情况下,默认情况下,当页面加载时,我的下拉列表显示“选择一个”。 但是当我的列表的值为“-1”时,它总是显示“-1”作为默认值,而不是“选择一个”

任何帮助都将不胜感激。谢谢你

请参考下面的代码

    dropDown = new DropDownChoice("subRuleCode",new PropertyModel(
                  inspectionid,"subRuleInfo"),cfrList,new IChoiceRenderer(){
        private static final long serialVersionUID = 1L;
        public Object getDisplayValue(Object object)
        {
            CfrInfo info = (CfrInfo) object;
            StringBuffer value = new StringBuffer();
            value.append(info.getCfrShortDesc());
            value.append("(");
            value.append(info.getCfrSubRule());
            value.append(")");
            return value.toString();
        }
        public String getIdValue(Object object, int index)
        {
            if (object instanceof CfrInfo) {
                CfrInfo info = (CfrInfo) object;
                return info.getCfrSubRule();
            }
            return (String)object;
        }         
    }
    );

我不确定我是否完全理解你的问题

你是说
CfrInfo.getCfrSubRule()
有时返回-1?您需要返回有效地作为
getIdValue()
主键的内容,因此不应返回-1

另一方面,如果您只是试图在未选择任何项目时更改下拉列表中显示的内容,则只需在
WicketApplications.properties
文件中提供属性键/值对,如:

yourDropDown.null = Choose One

在呈现组件之前,
subRuleInfo
字段中有什么内容?