- PR -

JSFとJavaScriptの連携について

1
投稿者投稿内容
Pianoman
常連さん
会議室デビュー日: 2003/05/24
投稿数: 26
投稿日時: 2008-03-14 15:23
JSFの<h:dataTable>タグを使って表示された表に対して、ブラウザに表示後にJavaScriptで行を追加してサーバー側に返したいのですが、最初に表示された分の行数しか認識してくれません。

上記のようなことを実現したい場合、以下のどれに該当するのでしょうか?
@JSFの基本機能で可能
Aコンポーネントをカスタマイズする必要あり
B裏技的なことをしないと辛い
CそもそもJSFでは無理

上記C以外であれば、その方法、あるいは、それらの参考情報が掲載されている書籍やサイトなどをご教授いただけると助かります。
JSFについては勉強不足な点もあり、基本的な質問かもしれませんが、
宜しく、お願いいたします。
Pianoman
常連さん
会議室デビュー日: 2003/05/24
投稿数: 26
投稿日時: 2008-03-14 16:21
【補足】すいません、補足させてください。
 表には<h:inputText>タグを使った入力項目や<h:selectOneMenu>タグを使った選択項目の列があり、表に値を入力できるようにしようと考えているものです。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2008-03-14 17:35
h:dataTableに明るくないので出来ないのかどうかはわからないですけど
そういう機能がぱっと見提供されてないなら難しいと思います。

JavaScriptでしなければならないという縛りがないなら
一度サーバ側に行って一行分の空データを追加して再度レンダリングが
一番自然な実装方法だと思います。

JSFってSessionに前のコンポーネントツリーをとっておいて、それと今回来た奴を
比較してごにょごにょしてるのでJavaScriptでinnerHTMLしたものとかを認識するのは
辛そうに感じます。

AかBかな。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2008-03-14 18:36
リクエストパラメータから値を取得すればいいだけじゃないですか?

Map map = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap();

HTML(JavaScript)のつくりの問題だけかと思いますが・・
Pianoman
常連さん
会議室デビュー日: 2003/05/24
投稿数: 26
投稿日時: 2008-03-17 10:45
Kazukiさん、kumaさん、ありがとうございます。

>リクエストパラメータから値を取得すればいいだけじゃないですか?
⇒ おっしゃる通りです。
  Map map = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
とすることで、なんとか取得できました。
とても、助かりました。

ただ、現在はActionメソッドの中でリクエストパラメータの解析を行うようにしていますが、出来ればdataTableのvalue属性で指定しているオブジェクトへ値を設定するタイミングで出来ないかな?と思っています。

JSFの仕組みから調査する予定です。

>HTML(JavaScript)のつくりの問題だけかと思いますが・・
⇒ JavaScriptで表の各セルにユニークなIDを割当てるようなロジックとなっていますが、
それ以外に何か考慮する点などありますでしょうか?

考慮点、あるいは、お勧めのサイト等あれば、ご教授いただければ幸いです。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2008-03-17 19:17
JSFについてはドキュメントを小一時間眺めただけなのでお勧めサイトもなにも無いです。申し訳ない
ただブラウザからの情報をサーバサイドではname,valueで取得するはずなので
Objectにmappingするにしてもnameの考慮が必要だろうということで

> HTML(JavaScript)のつくりの問題だけかと思いますが・・

と書きました。
Pianoman
常連さん
会議室デビュー日: 2003/05/24
投稿数: 26
投稿日時: 2008-03-18 11:15
>ただブラウザからの情報をサーバサイドではname,valueで取得するはずなので
>Objectにmappingするにしてもnameの考慮が必要だろうということで
⇒ うーん、確かに。

いろいろとヒントをいただき、感謝いたしております。

JSFのカスタマイズポイントなど分かった点はまた自己レスで掲載しようと思います。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)