- PR -

jsfを用いた携帯サイトの作り方

投稿者投稿内容
t_yamo
常連さん
会議室デビュー日: 2006/02/16
投稿数: 21
投稿日時: 2006-08-16 23:36
MyFaces1.1.0で携帯アプリを作ったことがあります。
 ・ALLOW_JAVASCRIPTをfalseにする
 ・h:commandLinkを使わない
 ・素敵な拡張コンポーネント群を使わない
  (大抵の拡張コンポーネントはJavaScript使いまくりなので)
ということだけ意識しておけばよかったと思います。
私の場合はPCと共有していたのでSTATE_SAVING_METHODはclientにしていたような気がしますが、serverで問題ないと思います(一応「戻る」の挙動を確認してみた方がよいかもしれませんが)。

あと、属性istyleを持つテキストボックスとテキストエリアも作ったような。
特攻
会議室デビュー日: 2006/08/13
投稿数: 4
投稿日時: 2006-08-17 00:44
t_yamo様
返信有難うございます。

javascriptをfalseにすると、全ての画面の遷移ができなくなるわけではなかったのですね・・・
遷移の大半がh:commandLinkで作っていたので、そう思ってました。

あとh:commandLinkではなく、h:commandButtonに変更したら問題なく動きました。
本当に助かりました!

しかし全てがボタンになってしまうということで悩み中です。
もしリンクでエラー無く遷移ができたらよいのですが、現状ではちょっと厳しいようなので、ちょっと前から作成中のstruts,spring,hibernateの案も平行して取り掛かっています。

皆様本当に有難うございました。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-08-17 10:32
引用:

よしだひろゆきさんの書き込み (2006-08-15 16:27) より:
それはSTATE_SAVING_METHODにclientを選択した場合ですが、携帯向けの場合、serverを選択できない理由があるのでしょうか?


確認してみたらserverだと何も付かないんですね。
昔のMyFacesだと他のデータが付いていたような???
多分、勘違いなので気にしないで下さい。
t_yamo
常連さん
会議室デビュー日: 2006/02/16
投稿数: 21
投稿日時: 2006-08-17 11:42
今回はStrutsを使った代替案があるとのことですが、どうしてもJSFでやる必要がある場合、MyFacesを拡張して無理やり対応という方法が無くもないです。

MyFacesのHtmlLinkRendererBaseにはrenderNonJavaScriptAnchorStart()という、メンテされているのかいないのか分からないメソッドが存在し、一応Non-JavaScriptの環境でh:commandLinkを使えるようにしようとした形跡があります。

ただ、このまま使うとh:formと不整合が発生するため、h:formのレンダラHtmlFormRendererBaseで定義されている「[フォームのID]+"_SUBMIT"」というhidden要素と同じものをリンクのクエリーに入れてあげる必要があります。

↓こんな感じ
hrefBuf.append("&");
hrefBuf.append(findNestingForm(component, facesContext).getFormName());
hrefBuf.append("_SUBMIT=1");

この方法はJSF1.1で規定されたh:commandLinkの範囲外になりますので、カスタムタグとして利用した方がよいと思います。
特攻
会議室デビュー日: 2006/08/13
投稿数: 4
投稿日時: 2006-08-18 01:07
t_yamo様
またまた返信有難うございます

そのような方法があるとは知りませんでした。
ただレンダラとカスタムタグということで、自分にはハードルが非常に高いですが
調べつつがんばってみたいと思います。
あと自宅サーバを立ち上げ、携帯での検証を行ってみましたが、
commandButtonだと問題なく遷移ができました。

本当に有難うございました。

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