1

我有一个 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);
}
4

1 回答 1

1

您是否为 SelectItem设置了valueField (="name")和? 这些属性允许 DataSource 将结果映射到 SelectItem。displayField

我在您的代码中注意到的一件事是,从未使用过在 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代码。

于 2013-04-23T17:29:16.520 回答