Vaadinコンボボックスのフィールド0をデフォルト値に設定しようとしています。ユーザーが何も選択しなかった場合、エラーメッセージは表示されません。Vaadinは0の位置でコンボボックスのフィールド値を取得できません
field.setNullSelectionAllowed(true);
field.setNullSelectionItemId(container.getIdByIndex(0));
だから私はインデックスに空白値を持っていない。だから私は、私はそれを設定しようとこのとそれを管理している私は、インデックス0
でフィールドを埋めてきた代わりに空白のフィールドのことをしたいと思います0の代わりにインデックス1の私の以前の値がインデックス0になりました。そしてそれはまさに私が欲しいものであり、コンボボックスにも必要なものです。
しかし、残念ながら、フォームを送信すると、値が渡されません。インデックス0の後の値のみが渡されます。それはとてもイライラする、誰かが私を助けることができる? setNullSelectionItemIdに渡される値は100%存在します。
コンボボックスの場所0のインデックスから値を取得するにはどうすればよいですか?
p.s.ここに私のコードは次のとおりです。それは次のようにバインドされ
public Field<?> buildAndBindComboBox(final String caption, final BeanItemContainer<?> container,
final Object propertyId, final String title, final ValueChangeListener listener, final boolean nullAllowed,
final boolean required, final boolean enabled, final boolean visible) {
@SuppressWarnings("serial")
ComboBox field = new ComboBox(caption, container) {
// http://dev.vaadin.com/ticket/10544
// - typing in ComboBox causes Internal Error
private boolean inFilterMode;
@Override
public void containerItemSetChange(com.vaadin.data.Container.ItemSetChangeEvent event) {
if (inFilterMode) {
super.containerItemSetChange(event);
}
}
@Override
protected List<?> getOptionsWithFilter(boolean needNullSelectOption) {
try {
inFilterMode = true;
return super.getOptionsWithFilter(needNullSelectOption);
} finally {
inFilterMode = false;
}
}
};
field.setStyleName("comboBox");
field.setInputPrompt("Select");
if(defaultValue == true){
field.setNullSelectionAllowed(false);
field.setNullSelectionItemId(container.getIdByIndex(0).toString());
//field.select(container.getIdByIndex(0));
//field.setValue(container.getIdByIndex(0));
//field.setRequired(false);
defaultValue = false;
} else {
field.setNullSelectionAllowed(nullAllowed);
field.setRequired(required);
}
field.setImmediate(true);
field.setNewItemsAllowed(false);
field.setFilteringMode(FilteringMode.CONTAINS);
if (title != null) {
field.setItemCaptionPropertyId(title);
}
//field.setNullSelectionAllowed(nullAllowed);
//field.setRequired(required);
field.setVisible(visible);
if (listener != null) {
field.addValueChangeListener(listener);
}
this.bind(field, propertyId);
field.setEnabled(enabled);
return field;
}
public void setDefaultValueFirstItem(boolean def){
defaultValue = def;
}
:私が正しくあなたの質問を理解している場合
commitmentFeeBinder.setDefaultValueFirstItem(true);
commitmentFeeBinder.buildAndBindComboBox("No working day labels", noWorkingDays, "noWorkingDaysCF", "title", null, false, !transaCF, true, !transaCF);
あなたは、COMボックスに持っていない他のどのような項目?あなたは通常、インデックスではなくオブジェクトを直接扱います –
ヌル選択を無効にし、最初にコンボボックスのsetValueを使ってインデックス0の項目を選択することができます。 –
Steffen Harbichはすでにそれを試みました。私はselect()、setValue()、さまざまな組み合わせを試しました - 何も動作しません。 Andre、私は他のコンボボックスとテキストボックスとnoneコンボボックスを持っていますが、デフォルト値を選択する必要があります。私は空白の価値を持っている必要があり、それを選択する必要があるかのように思われる。私はVaadinでこの単純なデータを得るのは難しいとは思えない。 – DarioBB