問題タブ [selectmanymenu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - UISelectMany がジェネリック プロパティのコレクションを返さないのはなぜですか?
要素を含む JSF ページがあり<h:selectManyMenu>
ます。value 属性は、サブクラスで type として定義された汎用オブジェクトを指しますArrayList<String>
。Java のドキュメントによると、この具象型のUISelectMany
として変換から値を返す必要があります。Collection
しかし、それはString[]
配列として返されています。私は何が欠けていますか?
jsf - selectManyMenu コンバーターの基本
selectManyMenu を機能させようとしていますが、コンバーターを正しく作成するのに問題があります。コンバーターを書く必要があるのはこれが初めてなので、物事はあまり明確ではありません。コンバーターでデータベースへの呼び出しを行うべきではないいくつかの場所を読みましたが、DB への呼び出し以外の方法で getAsObject メソッドで ID のオブジェクトを取得するにはどうすればよいですか?
}
重要:
ページが読み込まれると、私の selectManyMenu はレコードで満たされていますが、その名前は表示されず、レコード (機器) の名前ではなく、チェックボックスと空のスペースだけが表示されます。しかし、検索フィルターにいくつかの文字を入れようとすると、名前ではなくチェックボックスしか表示されなくても機能します。itemDescription="#{record.name}" を追加し、レコードの上にマウス ポインターを置くと、itemDescription が表示されます。したがって、明らかにコンポーネントはすべてのレコードにアクセスできますが、その名前は表示されません。スクリーン ショットは、http: //i57.tinypic.com/2wpm2ok.png (「Autoklav」はリストに表示したくないレコードの名前ですが、説明として表示されます) で確認できます。それはcssの問題ではありません、私はチェックしました:)
これは私のselectManyMenuです:
2 番目の問題は、文字列をオブジェクトに変換することです。何をしなければならないのかわかりません。DB を呼び出すかどうかです。現時点では、何を試してもエラーが発生します。オブジェクトを String (id?) から取得する正しい方法は何ですか?
http://www.primefaces.org/showcase/ui/input/manyMenu.xhtmlの指示に従いましたが、何が間違っているのか、少なくともレコード名が表示されない理由がわかりません (getAsString は本当に単純です) 、動作するはずです)
誰か提案がありますか、またはすでに selectManyMenu のコンバーターを持っていますか? さらに情報が必要な場合は、喜んでお知らせします。
ありがとう!
arrays - ui:repeat の UISelectMany により、java.lang.ClassCastException: [Ljava.lang.Object; java.util.List にキャストできません
HashMap
チェックボックスのリストMap<String, Boolean>
を成功にバインドするメソッドを使用しました。チェックボックスの数を動的に設定できるため、これは便利です。
それを の可変長リストに拡張しようとしていますselectManyMenu
。それらはselectManyであるため、にバインドできるようにしたいと思いMap<String, List<MyObject>>
ます。selectManyMenu
シングルを a にバインドできる単一の例がありList<MyObject>
、すべて正常に動作しますが、selectManyMenus の動的な数を a 内に配置ui:repeat
してマップにバインドしようとすると、奇妙な結果になります。デバッガーと呼び出しによって検証されるように、値はマップに正しく格納されますtoString()
が、ランタイムは、マップの値が型であり、型Object
でないと判断List<MyObject>
し、マップのキーにアクセスしようとすると ClassCastExceptions をスローします。
JSFがバインディングのターゲットのランタイムタイプを決定する方法と関係があると思います.aの値にバインディングしているMap
ため、の値タイプパラメータからタイプを取得することはわかりません地図。おそらくMojarraにパッチを当てる以外に、これに対する回避策はありますか?
一般に、動的な数の selectManyMenus を含むページを作成するにはどうすればよいですか? もちろん、Primefaces の<p:solveThisProblemForMe>
コンポーネントを使用せずに。(真剣に言うと、Primefaces は、私の制御の及ばない要因のため、ここではオプションではありません。)
List<T> の UISelectManyという質問により、java.lang.ClassCastException: java.lang.String を T にキャストすることはできません。
JSF:
コンバータ:
バッキング Bean:
ItemStore には、ID フィールドによってアイテムにアクセスするための HashMap メソッドとデリゲート メソッドが含まれているだけです。
アイテム:
ItemListValidator:
エラー:
Stacktrace は切り取られましたが、次の行で発生します。
ここで何が欠けていますか?
jsf - @NotEmpty リストの検証
対応する Bean のリストにマップされた JSF コンポーネントがあります。フォームが送信されるときにマップされたフィールドに少なくとも 1 つの値が含まれるようにするため、このフィールドには @NotEmpty という注釈が付けられます。
豆 :
ユーザーがコンポーネントで何かを選択するたびに、選択内容をすぐに Bean にマップする必要があるため、コンポーネントに ajax 動作を追加します (ここではコンポーネントは a ですp:selectManyMenu
が、List にマップされたコンポーネントには問題があるようです) ) :
XHTML :
私の問題は、次の状況で発生します。
- ユーザーは 1 つまたは複数の選択肢を選択します (Ctrl + ここをクリック)。
- 選択したすべての選択肢を選択解除します。
- 彼はフォームを送信します。
- 結果を見る
dataList
と、最後に選択されていない値がまだ Bean にあることがわかります。
状況についての私の理解では、ユーザーが最後の値の選択を解除すると、フィールドの @NotEmpty アノテーションが原因で検証が失敗するということです (p:message
検証失敗メッセージで確認されます)。結果として、セッターは呼び出されず、最後に選択されていない値が Bean に残ります。
適切な方法で、ユーザーが検証に失敗することなくすべてのアイテムを選択解除できるようにし、フォームが送信されたときにのみこのフィールドでバリデーターを実行できるようにするにはどうすればよいですか?
jsf - javax.faces.FacesException: の値は配列またはコレクションでなければなりません
エラーが発生しています:
javax.faces.FacesException: 'frmrapport:type' の値は配列またはコレクションでなければなりません
XHTML ファイルから:
Java Bean から:
問題は、Bean が でList
あり、リストを に変換できないことString[]
です。