我有一个SelectItem,可以从数据库中获取数据。我需要向我的选择项添加一个emptyField。
我的代码看起来像那样,并且效果很好。
SelectItem editor = new SelectItem(...);
editor.setOptionDataSource(new DataAllowableValuesDS('data id for database request'));
但是在将其更改为以下代码后,HttpServletRequest中的start_row和end_row字段已更改为“ -1”。我该如何解决?
SelectItem editor = new SelectItem(...);
editor.setAllowEmptyValue(true);
editor.setOptionDataSource(new DataAllowableValuesDS('data id for database request'));
public DataAllowableValuesDS(String id) {
DataSourceField nameField = new DataSourceTextField("name", null, 2000);
nameField.setPrimaryKey(true);
setFields(nameField);
}
最佳答案
您是否为SelectItem设置了valueField (="name")
和displayField
?
这些属性允许DataSource将结果映射到SelectItem。
我在您的代码中注意到的一件事是,从未使用过在DataAllowableValuesDS构造函数中传递给'id'的值。
此外,结果应同时具有键/值对。
尝试将SelectItem和DataAllowableValuesDS更改为
SelectItem editor = new SelectItem(...);
editor.setAllowEmptyValue(true);
editor.setValueField("key");
editor.setDisplayField("value");
public DataAllowableValuesDS(String id) {
DataSourceField keyField = new DataSourceTextField("key", "Key");
DataSourceField valueField = new DataSourceTextField("value", "Value");
setFields(keyField, valueField);
}
其他选择
使用DataArrivedHandler添加一个空值
尝试从服务器端发送空值作为结果的一部分
尽可能发布您的
DataAllowableValuesDS
代码。