非常に奇妙な問題に直面しています。実際には私は複数の値でプリム(6.0)オートコンプリートを使用しています。 少し厄介な問題を除いて、すべてが期待通りに機能します。データを保存してページをリロードすると(スコープを残して)、すべてが良いように見えますが、マルチセレクションの値は新しいものを選択するとすぐに消滅します。例えば、リストは、ページを再読み込みした後、そのように見える :Primefacesページリロード後にオートコンプリートで値が削除される
値1値2値3
とすぐに今のボックスに入力してValue4を選択するリストがそのように見えるよう:
値4
他のすべての値は、最初に存在していても消えます。ここ
いくつかのコード(XHTML)
<p:autoComplete multiple="true" value="#{pricelistItemBean.newPricelistItem.subItems}" completeMethod="#{pricelistItemBean.completeItems}"
var="pl" itemLabel="#{pl.name}" itemValue="#{pl}"
converter="#{couchbaseEntityConverter}" forceSelection="true" cache="true" >
<p:column>
<h:outputText value="#{pl.name}"/>
</p:column>
<p:column>
<h:outputText value="#{pl.description}"/>
</p:column>
これはコンバータである:
@Named
@Scope("session")
public class CouchbaseEntityConverter implements Converter {
public static final int SIMPLE_CACHE_SIZE = 20;
private Map<String, CBMain> entities = new HashMap<>(SIMPLE_CACHE_SIZE);
@Autowired
CouchbaseRepository couchbaseRepository;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value != null && value.length() > 0) {
if (entities.containsKey(value)) {
return entities.get(value);
} else {
CBMain entity = couchbaseRepository.findById(value, CBMain.class);
if (entities.size() >= SIMPLE_CACHE_SIZE) {
List<String> list = new ArrayList<>(entities.keySet());
entities.remove(list.get(list.size() - 1));
}
entities.put(value, entity);
return entity;
}
} else {
return null;
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null && value instanceof CBMain) {
return ((CBMain) value).getId();
}
return null;
}
public Map<String, CBMain> getEntities() {
return entities;
}
}
エンティティは、基本的には
@PostConstruct
ようにロードされます3210
私がやったもの:
私はちょうどチェックする
@PostConstruct
方法でリスト(オートコンプリート値)をコピーしました。リストは間違いなく正しく設定されています。私は、itemSelect/itemUnselect Eventsを確認しました。ここでは、itemUnselectイベントがトリガーされるとすぐにリストが空のリストに戻されます。
ページの読み込み後に項目を追加/削除すると、すべてが次のように機能します。期待される。私は春/ Tomcatの8/JSF2.2/Couchbaseのを使用していますが、私は一種のアイデアが不足しています
..任意のヘルプは高く評価されるだろう。
ありがとうございます!
ので、すべてのタグ(春、JSF、tomcatに、primefacesとオートコンプリート)は、実際には無関係ですタグは 'couchbase'だったはずですか? ;-) – Kukeltje
まあ...うん。私は最初に、それはデータで何かするつもりはないと確信していた...あなたは時々間違っているかもしれない...: - / – djnose