ユーザーは、エントリを追加、編集、および削除できるようにするために、ページ上にストリングのリストを表示する必要があります。私はこれを達成するためにDataTableを使用すると考えました。RowEditorを使用したStringのDataTableは変更を保存しません
DataTableに値が表示され、[削除]アイコンがクリックされると行が削除され、[追加]ボタンがクリックされると行が追加されます。 ただし、鉛筆アイコンをクリックしてRowEditorを使用すると、チェックマークをクリックしても変更内容が反映されません。行の値は空白に戻ってしまうだけです。私はすべての作業きちんと私のプロジェクト内の他のページからのDataTableマークアップの大部分をコピーしたhttp://imgur.com/a/dxlht
-
はここで起こって問題点を示すGIFです。私がここで見ることができる唯一の違いは、これが複雑なオブジェクトではなく、StringのDataTableであることです。これは、InputTextの値が単なるStringの場合、RowEditorの「入力」ファセットに影響しますか?ここで
はDataTableのマークアップです:私はPrimeFaces 5.3/JSF 2.0を使用しています
private List<String> configs;
public List<String> getConfigs() {
return this.configs;
}
public void setConfigs(List<String> configs) {
this.configs = configs;
}
public void removeEntry(String entry) {
this.configs.remove(entry);
}
public void addEntry() {
this.configs.add("");
}
:ここ
<h:form>
<p:dataTable id="configTable" value="#{bean.configs}" var="config"
editable="true" editMode="row" emptyMessage="No entries exist.">
<p:column>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{config}" /></f:facet>
<f:facet name="input"><p:inputText value="#{config}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:rowEditor />
</p:column>
<p:column>
<p:commandLink update="configTable" styleClass="ui-icon ui-icon-trash" process="@this"
actionListener="#{bean.removeEntry(config)}" />
</p:column>
<f:facet name="footer">
<p:commandButton value="Add Entry" update="configTable" icon="ui-icon-plus" style="float:right;" process="@this"
actionListener="#{bean.addEntry()}" />
</f:facet>
</p:dataTable>
</h:form>
は、関連するBeanコードです。