私はx noから始めたいと思います。 (私のアプリでは、テキストデータフィールドと数値データフィールドのペアを持っています)、xpageアプリケーション(例えば10ペア)で "more fields"をクリックすると、ページ上で更新しますが、無制限にしたいと考えています。 (ページがクラッシュしない限り)、フォームとそのフィールドすべてのデータを送信したいと考えています。これを実装する最良の方法は何ですか?Xpagesボタンをクリックすると、より多くのフィールドが(無制限)
答えて
通常、フィールドは、ドット表記を使用してドキュメントデータソースにバインドされている:
<inputText value="#{contact.firstName}" />
しかし、配列表記もサポートされている:
<inputText value="#{contact['firstName']}" />
この後者のシンタクス内のフィールド名がされているためBeanの暗黙のプロパティではなく、文字列として扱われるため、動的に計算することができます。これらの動的フィールドを定義する最も簡単な方法は、基本タイプの各フィールドのカスタムコントロールを作成し、それぞれをデータソースとフィールド名を受け入れるように定義することです。だから、フィールド自体は、次のような構文で終わる:
<inputText value="#{compositeData.dataSource[compositeData.fieldName]}" />
その構文を使用することにより、任意の複雑さの計算は、カスタムコントロールに渡すためにどのようなフィールド名を決定するために使用することができます。シナリオでは、フィールドペアは、あなたがそれぞれのフィールドの接尾辞を指定できるようになる取り囲んリピート制御にindexVarを指定して、達成しようとしている...おそらく次のようなもの:これにより
<xp:repeat indexVar="fieldSuffix" value="#{viewScope.rowCount}">
<xp:div>
<xc:dynamicInputText dataSource="#{contact}" fieldName="fullName_#{fieldSuffix}" />
<xc:dynamicInputNumber dataSource="#{contact}" fieldName="phoneNumber_#{fieldSuffix}" />
</xp:div>
</xp:repeat>
アプローチを使用すると、 "fullName_0"、 "fullName_1"などのフィールドがviewScopeで指定された制限まで終了します。通常は、既存の文書が開かれたときに、viewScope変数が正しい限度に戻されることを保証するだけです。もちろん、もう一つのアプローチは、実際には、ドキュメント上の別のアイテムとして制限を保存し、代わりにリピート値をバインドすることです。
練習23「テーブルウォーカー」もご覧ください。複数のフィールドを処理するのではなく、複数の値を持つフィールドがあり、処理や保存の点で優れています(@Elementsを使ってドキュメント内にいくつのフィールドがあるか調べることができます)。練習はここにあります: http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Tutorial-Introduction-to-XPages-Exercise-23 ボタンは一度に1行しか追加しませんが、調整は簡単です。
ありがとう、ありがとう、 – pipalia
あなたができることは2つの文字列値LabelとDataを持つBeanと、そのオブジェクトのArrayListを持つマネージドBeanです。リピートコントロールの中で、繰り返しをArrayListにバインドしてから、xp:inputText rowData.Dataに、xp:ラベルをrowData.Labelに追加すると、さらに5行追加するだけですが、さらに多くのオブジェクトがArrayListに追加され、ページが更新されると、データはまだarraylistに保存され、5データを追加できる新しい空のオブジェクト。
public class Data {
private String label;
private String data;
public Data() {
}
//getters and setters
}
public class ManagedBean {
private ArrayList<Data> datalist; // add a managed property for this one so It will create a new one when needed.
// getters and setters
public addFiveMoreObjects() {
Data newItem;
for (int i=0; i<5; i++) {
newItem = new Data();
datalist.add(newItem);
}
}
}
<xp:repeat value="#{managedBean.datalist}" var="rowData">
<xp:text value="#{rowData.label}" />
<xp:inputText value="#{rowData.data} />
</xp:repeat>
<xp:button value="Add 5 More"> // call #{managedBean.addFiveMoreObjects}
これは本当に面白いと共有のための多くのありがとう。私はまだJavabeansを開発していないので、まず他の方法を試みるかもしれません。 – pipalia
- 1. クリック数の制限、制限、無効化
- 2. ボタンをクリックすると、部分的に更新されたボタンをクリックすると、より多くのフィールドが表示されます。
- 3. さらに多くのボタンをロードする無限スクロールプラグインはありますか?
- 4. デフォルトの制限よりも多くのFacebookブックを取得
- 5. ボタンをクリックすると配列の結果とインクリメントが制限されます
- 6. 混在C++/CLI TypeLoadException内部制限:フィールドが多すぎる
- 7. が無制限のメモリ制限
- 8. sphinx/docutilsのデフォルトのフィールド名の制限を無効にする
- 9. ボタンでsetTimeoutを開始/停止し、より多くのクリックでより速くカウントを防止します。
- 10. 以上のボタンが制限
- 11. jQueryは無限のスクロールでさらに多くのボタンを作成します
- 12. Lucene.Net他のフィールドよりも1フィールドをより多く与える
- 13. ボタンをクリックするとインクリメントが速くなります
- 14. 一度横断歩道のブラウザよりも多くのいずれかのボタンをクリックすると
- 15. より多くのフィールドを取得する方法
- 16. textareaは無制限で、制限はありません
- 17. 編集フィールドが空でない限り、ボタンを無効にする方法はありますか?
- 18. 無制限のオンラインファイルストレージ
- 19. データビューアのフィールドを制限する
- 20. (無制限)ロングパイソンINTにより暗黙の遷移を検出
- 21. Gridviewでボタンをクリックすると他のボタンが無効になる
- 22. 制限1写真を多く表示する - Laravel 5.2
- 23. 1行にTEXTフィールドの制限がありますか?
- 24. 両方の入力フィールドが値を持たない限り、ボタンは無効になります
- 25. 無効にすることなくドロップダウンリストの変更を制限する方法
- 26. ...より多くのフィールドに一致する:最初のフィールドをより重視しますか?
- 27. ボタンをクリックするまで無限に音楽を再生する
- 28. XSD maxOccurs = "無制限"
- 29. 多対多リレーションの無限ループ
- 30. JPanelのボタンをクリックすると、キーボードコントロールが機能しなくなりますか?
ありがとうございます、ティムは間違いなくこれを行ってあなたに投稿してください。私はこれを試したことはありませんが、繰り返しコントロールを部分的にリフレッシュするかどうかは、既存のデータを失うことはありませんか? – pipalia
私はかなり正確に同じ行に沿ってこれに答えようとしていましたが、このメソッドはうまくいきます。なぜ新しいフィールドが表示されないのか不思議ではないので、 'repeat limit'をviewScopeの制限と同じにすることをお勧めしますあなたが30ヒットした後。 –
素晴らしい提案、デクラン。もちろん、リピートにページャーを付けることもできますが、このタイプのインターフェースでは、ほとんどのユーザーはビュータイプのインターフェースと同じようにページネーションを使用できるとは考えていません。おそらく好ましいでしょう。 –