FAQ/S2JSF
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[FAQ]]
*S2JSF [#j0955499]
#contents
**formのdisabled指定でsessionコンポーネントが破壊される [...
>[[S2サポーター]] (2006-04-29 (土) 19:54:01)~
~
''Question''~
instance="session" としたコンポーネントのデータを~
form の input タグで disbaled指定して表示すると、~
表示そのものは元々の値が表示されるのですが、~
その後、submit するとそのデータが壊されてしまいます。~
~
表示している元々の内容にかかわらず、セッターが null で~
呼ばれてしまうのが原因ですが、これは仕様でしょうか?~
~
また、仕様だとすると回避する方法はありませんでしょうか?~
~
セッターが呼ばれないか、せめて表示している値で再度~
呼ばれればいいのですが、~
null で呼ばれて壊されてしまうと~
困ってしまいます。~
~
− hoge.html −−−−−−−−−−
<html xmlns:m="http://www.seasar.org/maya">
<head>
<meta http-equiv="Content-Type" content="text/html; char...
<title>Hoge</title>
</head>
<body>
<form>
<input type="text" disabled="true" m:value="#{hogeDto....
<input type="submit" value="submit"/>
</form>
</body>
</html>
− hoge.java −−−−−−−−−−
package examples.jsf.dto;
public class HogeDto {
private String hoge;
public String getHoge() {
return hoge;
}
public void setHoge(String hoge) {
System.out.println(hoge);
this.hoge = hoge;
}
}
− hoge.dicon −−−−−−−−−−
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Contain...
"http://www.seasar.org/dtd/components21.dtd">
<components>
<component name="hogeDto" class="examples.jsf.dt...
<property name="hoge">"foo"</property>
</component>
</components>
~
~
''Answer''~
S2JSFを修正完了しました。~
S2JSF 1.0.10から反映されています。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**ファイルダウンロード後にIllegalStateExceptionエラー発生...
>[[S2サポーター]] (2006-04-29 (土) 19:47:12)~
~
''Question''~
ダウンロードのプログラムを下記のように実装しファイルのダ...
その後の処理でIllegalStateExceptionエラーが発生して落ちて...
~
・環境~
Java 1.5.0 Update5~
Tomcat 5.5.12~
~
Seasar2 2.2.11~
S2JSF 1.0.28~
Myfaces 1.0.8~
~
~
・ソース~
~
static public void download(HttpServletResponse response...
response.setContentType("application/octet-stream;ch...
response.setHeader("Content-Disposition","attachment...
PrintWriter out = response.getWriter();
try{
// 各行の内容を繰り返し出力
for(int i = 0; i < line.length; i++){
out.print(line[i]);
out.print(System.getProperty("line.separator"));
}
}
finally {
if(out != null){
out.close();
}
}
}
~
~
''Answer''~
~
下記2つの方法で対応可能~
~
【Answer1】~
プログラム中で~
response.getWriter();~
している個所を、~
response.getOutputStream();~
へ変更するとどうでしょうか?~
~
OutputStreamWriter osw = new~
OutputStreamWriter(response.getOutputStream(), encoding);~
PrintWriter out = new PrintWriter(osw);~
~
といった具合に。~
~
【Answer2】~
web.xmlのfilter-mappingを変える方法でもうまくできそうな気...
します。~
~
現状はs2filterの後にextensionsFilterが適用されるようにな...
いますが、extensionsFilterの後にs2filterが適用されるよう...
を変更してみて頂けますか?~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**S2JSF1.0.8とmyfaces 1.1.0以降を組み合わせて使うと日付が...
>[[S2サポーター]] (2006-04-29 (土) 19:43:46)~
~
''Question''~
~
S2JSF1.0.8とmyfaces 1.1.0以降を組み合わせて使うと日付がず...
~
例えば~
s2jsf-exampleのmyfacesを1.1.0以降に入れ替えます。~
Employee Managementのcreateを押し、Hire Dateを ~
2005/12/01で新たに登録します。~
その後、登録したものを検索するとHire Dateを ~
2005/11/30と表示されます。~
データベースには2005/12/01で登録されています。~
~
myfaces 1.0.9では問題ありませんでした。~
myfacesの問題なのでしょうか?~
~
s2jsf-exampleのallconverter.diconに登録されてあるoutputDa...
を指定してみましたが同じ現象でした。~
~
ちょっと改造し時間まで表示させてみると2005/12/01 00:00:00...
2005/11/30 15:00:00となっています。~
~
9時間ほど前の時間が表示されているようです。~
~
~
''Answer''~
~
ちょっとmyfacesのソースを見てみました。~
myfaces 1.1.1だと、javax.faces.convert.DateTimeConverter...
だとデフォルトのタイムゾーン(GMT)を返すようです。~
myfaces 1.0.9だと、nullかどうかは判定せずそのまま返してい...
myfaces 1.0.9がどこでDateTimeConverterにタイムゾーンを設...
いきれていませんが・・・~
~
diconのConverterに以下のようにデフォルトのタイムゾーンを...
きちんと表示されるようになりました。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**S2JSF1.0.9でページを継承しないで初期化アクションを実行...
>[[S2サポーター]] (2006-04-29 (土) 19:41:59)~
~
''Question''~
S2JSF1.0.9でページを継承しないで初期化アクションを実行す...
~
s2jsf-exampleではemployeeSearch.htmlのm:extendsを削除し、~
<html xmlns:m="http://www.seasar.org/maya"
m:action="#{employeeSearchInitAction.initialize}">
として実行すると~
[ESSR0065]クラス(examples.jsf.action.impl.EmployeeSearch...
というエラーが出力されます。~
~
とりあえず初期化アクションが必要なものは、必ず何かのペー...
~
''Answer''~
~
問題に対応しました。~
次バージョンから反映されます。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**message タグでのメッセージ表示時に改行したい。 [#bd913b...
>[[S2サポーター]] (2006-04-29 (土) 19:41:10)~
~
''Question''~
リソースファイルにメッセージを定義した内容を、S2JSFの h:m...
改行(brタグ)をしたいのですが、URLエンコードされてしまう...
~
message タグでのメッセージ表示時に、改行する方法があれば...
~
''Answer''~
対象ブラウザがIE5.5以上でしたら、次のようなCSSを指定して...
~
table {
max-width: 100%;
table-layout: fixed;
}
pre{
word-wrap: break-word;
}
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**span m:valueで表示した内容が消える [#t6d846f0]
>[[S2サポーター]] (2006-04-29 (土) 19:31:42)~
~
''Question''~
S2JSFにおいて、<span m:value>によって表示した内容が消える~
という問題が発生しています。~
~
■現象~
~
select → edit → confirm のような画面の流れがあます。~
~
・select画面では、何かしらの項目をドロップダウンリスト...
・edit画面では、select画面で選択された値を以下のように...
~
<span m:value="#{testDto.testValue}"/>~
<input type="hidden" m:value="#{testDto.testValue}"/>~
~
・edit画面の他の入力項目にvalidationエラーが存在する場...
confirm画面に遷移せずにedit画面を再度表示する~
~
このような時に、<span m:value>で表示している内容が消え...
#hiddenで持っている値はHTMLのソースには出力されていま...
~
<input type="text" m:value="#{testDto.testValue}"/>で表...
内容は消えません。しかし、これでは編集できてしまいます。~
~
また、<input type="text" m:value="#{testDto.testValue}"...
とすると内容は消えてしまいます。~
~
回避策などありましたら、教えてください。~
~
''Answer''~
※下記はMLの投稿に記載されていたBlogの内容である。~
BlogのUML:http://d.hatena.ne.jp/higayasuo/20051027#1130...
~
~
JSFでhiddenで保持している項目を表示しているときに、バリデ...
ここでは、S2JSFをサンプルにして説明しますが、JSFでもあて...
あるデータの編集画面があり、その画面は、hogeというJavaBea...
この画面のhtmlは次のように作りがちです。~
~
<form>
<input type="hidden" m:value="#{hoge.aaa}"/>
<span m:value="#{hoge.aaa}"/>
...
</form>
~
残念ながら、上記のように作ると、項目のどこかでバリデーシ...
なぜなら、hiddenで保持している項目をJavaBeans(hoge)に反映...
じゃどうすれば良いのかというと、表示用のspanは、hiddenで...
~
<form id="hogeForm">
<input type="hidden" id="aaaHidden" m:value="#{hoge.aa...
<span m:value="#{param['hogeForm:aaaHidden']}"/>
...
</form>
~
これで、確かに、バリデーションエラーになったときに、hidde...
でも、問題があります。画面が最初に表示されるときは、hidde...
最終的な解決策は、次のようになります。~
~
<form id="hogeForm">
<input type="hidden" id="aaaHidden" m:value="#{hoge.aa...
<span m:value="#{hoge.aaa != null ? hoge.aaa :
param['hogeForm:aaaHidden']}"/>
...
</form>
~
最初に画面が表示されるときは、hoge.aaaが設定されているの...
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-October/00...
http://ml.seasar.org/archives/seasar-user/2005-October/00...
//
**HttpServletRequest の自動バインディングを行うとエラー [...
>[[S2サポーター]] (2006-04-29 (土) 19:28:37)~
~
''Question''~
S2JSF-Examples の、ForEach2ListActionImpl に、~
~
private HttpServletRequest request = null;
public void setRequest(HttpServletRequest aRequest) {
request = aRequest;
}
~
と定義して、サンプルを実行すると、~
~
java.lang.UnsupportedOperationException: getInstanceMode
at org.seasar.framework.container.impl.SimpleCompone...
at org.seasar.jsf.util.InvokeUtil.exportVariables(In...
:
(以下、省略)
~
と、例外が発生し、画面が遷移しません。~
~
JDK1.4.2、Tomcat5.0.28、S2JSF1.0.8 です。~
~
~
''Answer''~
原因わかりました。~
HttpServletRequest に対して、setter だけではなく、getter ...
setter だけにしたら、発生しなくなりました。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-October/00...
http://ml.seasar.org/archives/seasar-user/2005-October/00...
//
**ActionへHttpServletRequestがインジェクトされません [#ff...
-Q: http://ml.seasar.org/archives/seasar-user/2006-Octobe...
-A: http://ml.seasar.org/archives/seasar-user/2006-Octobe...
**validatorでNGの時のメッセージをalertで出力したい [#n91d...
>[[S2サポーター]] (2006-04-29 (土) 19:25:07)~
~
''Question''~
validatorでNGの時のメッセージをalertで出力したいのですが...
したらよいでしょうか?~
~
''Answer''~
JavaScriptでの入力チェックならalert出力するのは容易ですが...
JavaScriptで出力するとなると少々、力技が必要かなと思いま...
考えられるのは、画面のonload処理でバリデーションエラーが...
~
バリデーションエラーがあったかどうかの判断はformのhidden...
~
例えば、Action内でsessionに"ErrorMsg"というキーでエラーメ...
格納した場合、hiddenには以下のように記述し~
~
<input type="hidden" id="err" m:value="#{sessionScope['E...
~
onload時に、上記のhidden値をチェックして値があればalert表...
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-December/0...
http://ml.seasar.org/archives/seasar-user/2005-December/0...
//
**m:passthrough="true"を指定すると、convert属性が効かなく...
>[[S2サポーター]] (2006-04-29 (土) 19:23:00)~
~
''Question''~
~
m:passthrough="true"でいくつかの属性が無効果になってしま...
りませんか?~
現在、以下の記述(そのまま写したので取り留めの無い形になっ...
convert属性がききません。m:passthroughをとるとうまくいき...
うか?~
~
<input type="text" size="15" maxlength="10"
m:value="#{xp001_6.code}"
m:onchange="changeCode(this, 'name');"
id="code" name="code"
m:converter="#{rightPad10}"
m:passthrough="true"
onfocus="this.select();"
m:onKeyPress="return Help(this,event,'承認ルート一覧'...
~
''Answer''~
~
m:passthrough="true"をタグの属性に追加すると~
m:passthrough="true"以外の部分を、そのまま出力するという...
現在の仕様ですね。~
#m:passthorugh="true"にした場合とそうでない場合での~
出力されたHTMLのソースを見ると分かると思います。~
~
ちなみに下記ソースでm:passthrough="true"を使用したい目的は~
JavaScriptでformのcode.value等を利用したいからでしょうか?~
そうであれば、formのidがhogeの場合、JavaScriptからは~
下記textの値は、document.hoge['hoge:yone2'].valueで利用出...
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-December/0...
http://ml.seasar.org/archives/seasar-user/2005-December/0...
//
**selectボックスのクリックイベントにてm:immediate=trueと...
>[[S2サポーター]] (2006-04-29 (土) 19:17:05)~
~
''Question''~
~
以前[seasar-user:2550]で、S2JSFでselectボックスから選択し...
javascriptでsubmitする方法を教わりました。~
~
それに対し追加で質問がございます。~
~
上記の方法でsubmitした場合、m:immediate="true"とすると値...
つまり、リストから選択した値がm:valueで指定のプロパティに...
なぜこの現象が発生するのか教えてください。~
画面の挙動としては、submitはされますが選択する前と全く同...
m:immediate="true"の記述を削除すると正常に受け取れます。~
~
''Answer''~
~
m:immediate="true"の場合、updateModelフェーズがスキップさ...
値を受け取ることはできません。~
これは、JSFの仕様です。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**コンポーネントの名前によってactionのセッタが呼ばれない ...
>[[S2サポーター]] (2006-04-29 (土) 19:11:26)~
~
''Question''~
~
コンポーネントの名前によってactionのセッタが呼ばれなくな...
~
s2jsf-example の Add で~
AddDtoのコンポーネントネームを addDto から hogeAddDto に...
~
具体的には add.diconの
<component name="addDto" class="examples.jsf.dto.AddDto"...
AddActionImpl.javaの
void setAddDto(AddDto addDto)
add.htmlの
#{addDto.arg1}
などを、それぞれ、~
~
<component name="hogeAddDto" class="examples.jsf.dto.Add...
void setHogeAddDto(AddDto addDto)
#{hogeAddDto.arg1}
などと変更した場合、~
~
問題なく動作しますが、addDto を hAddDto に変更すると動作...
~
<component name="hAddDto" class="examples.jsf.dto.AddDto...
void setHAddDto(AddDto addDto)
#{hAddDto.arg1}
~
setHAddDto()が呼ばれなくなってしまうようなのですが、~
コンポーネント名には、つけてはいけない名前が存在するので...
~
~
''Answer''~
~
JavaBeansのネーミングルールにより、setHAddDto()のプロパテ...
HAddDtoです。hAddDtoではありません。~
コンポーネントの名前を変える必要があります。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**カスタムコンポーネント用tldファイルの配置場所について [...
>[[S2サポーター]] (2006-04-29 (土) 19:10:15)~
~
''Question''~
~
独自に作成した、JSF のカスタムコンポーネントをS2JSF で使...
TLDファイルは、どこに置き、どのような宣言をすればいいので...
~
たとえば、/WEB-INF/tlds/MyTag.tld を作成し、jsf.dicon に、~
~
<initMethod name="addTaglibUri">
<arg>"my"</arg>
<arg>"/WEB-INF/tlds/MyTag.tld"</arg>
</initMethod>
~
と宣言したところ、[Seasar-user:2453] でも報告されている...
エラーとなります。~
[Seasar-user:2454] のように、jar ファイルを作成して配置...
方法が取れない場合、たとえば、Webアプリケーションの中の一...
カスタムコンポーネントが存在し、その機能を、繰り返しテス...
といったような場合です。~
~
~
''Answer''~
~
1.0.13以前のバージョンは、tldは、jarファイルの中にあるも...
1.0.14で、利用できるようになりました。~
~
■利用方法~
~
1. WEB-INF/tlds/some.tldへtldファイルを配置~
2. web.xmlへtaglib要素を追加~
~
# web.xml~
<taglib>
<taglib-uri>/some_uri</taglib-uri>
<taglib-location>/WEB-INF/tlds/some.tld</taglib-locati...
</taglib>
~
taglib-locationは、実際に配置する箇所にします。~
~
3. jsf.diconへエントリを追加~
~
org.seasar.jsf.runtime.JsfConfigImplへinitMethodを追加。~
~
# jsf.dicon~
<initMethod name="addTaglibUri">
<arg>"some"</arg>
<arg>"http://somedomain/"</arg>
</initMethod>
~
第2引数はsome.tldのtaglib/uriとあわせます。~
~
4. jsf.diconを修正~
~
上部にある記述を変更します。~
~
# jsf.dicon~
<component class="org.seasar.jsf.runtime.ServletContextT...
<initMethod name="init"/>
<destroyMethod name="destroy"/>
</component>
~
↓変更~
~
<component class="org.seasar.jsf.runtime.CompositeTaglib...
<initMethod name="addTaglibManager">
<arg>
<component class="org.seasar.jsf.runtime.ServletCo...
<initMethod name="init"/>
<destroyMethod name="destroy"/>
</component>
</arg>
</initMethod>
<initMethod name="addTaglibManager">
<arg>
<component class="org.seasar.jsf.runtime.WebappCon...
<initMethod name="init"/>
<destroyMethod name="destroy"/>
</component>
</arg>
</initMethod>
</component>
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-January/00...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**validatorタグを利用すると例外が発生する [#a5947b7b]
>[[S2サポーター]] (2006-04-29 (土) 19:07:17)~
~
''Question''~
~
s2jsf 1.0.13 でS2ホットスワップモードを有効にしてvalidato...
ntimeExceptionが発生します。無効だと正常です。S2JSF Examp...
した。実行環境はWindows XP SP2、J2SDK1.4.2.10、Tomcat5.0....
~
RuntimeException:
java.lang.RuntimeException: Could not restore StateHold...
$Proxy53 (missing no-args constructor?)
~
~
''Answer''~
~
diconファイルにValidatorを登録すると、hotswapは利用できま...
faces-config.xmlに登録して使う分には大丈夫ですので、~
hotswapを使う場合は、そちらの方法をお試しください。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**Firefoxブラウザでプロパティ設定に失敗する [#zf916bea]
>[[S2サポーター]] (2006-04-29 (土) 19:00:53)~
~
''Question''~
~
作成中のシステムで、FireFox を使用したときにプロパティの...
~
たとえば、html に、~
~
<input type="button" value="送信" m:action="#{testAction...
~
とあり、TestActionBean に、~
~
private int selectedScheduleTimeID = 0;
private int selectedLocationID = 0;
(と、それぞれのsetter)~
~
が定義してあるような場合です。~
この場合、送信ボタンを押すと、sendMail() は実行されるので...
~
TestActionBean$$EnhancedByS2AOP$$17d2d70)のプロパティ(se...
理由はjava.lang.NumberFormatException: For input string:...
~
とのエラーになります。~
~
リクエスト内容を調べてみると、IE の場合、~
SelectScheduleComplete.html_SUBMIT=1&selectedScheduleTim...
(リクエストの前半は省略しています)
と、selectedScheduleTimeID、selectedLocationID に対して、...
FireFox の場合、~
SelectScheduleComplete.html_SUBMIT=1&selectedScheduleTim...
のように、"" が送信されています。~
これはブラウザに依存するのでどうしようもないと思うのです...
~
~
~
''Answer''~
~
S2JSFを修正しました。~
S2JSF 1.0.14から反映されています。~
~
■修正内容~
hidden値のクリアの際に、明示的に'null'を指定するよう以下...
~
org.seasar.jsf.render.html.HtmlCommandLinkRenderer.java~
org.seasar.jsf.render.html.HtmlFormRenderer.java~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**<body>タグにJavaScriptを埋め込む方法 [#x833b1bf]
>[[S2サポーター]] (2006-04-29 (土) 18:58:13)~
~
''Question''~
~
■出力形式例~
~
<body onunload="">
~
s2jsf-exampleに存在するlayout.htmlのbodyタグに「onunload=...
実行したサンプルにて表示しているHTMLを確認したところ、「<...
(onunload=""が表示されていない)~
~
~
''Answer''~
~
<body onunload="a">
のように、属性値があれば出力されます。~
(現状では、属性値がnullや""の場合は属性自体を出力していま...
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**ページの初期化処理で無限ループ発生 [#r71cfa5a]
>[[S2サポーター]] (2006-04-29 (土) 18:49:05)~
~
''Question''~
ページの初期化処理で無限ループが発生して困っています。~
~
s2jsf-example では、完全に再現ができないのですが、次の...
です。~
~
1. EmployeeSearchInitActionImpl#initialize を、以下の...
----------------------------------------------------...
public String initialize() {
System.out.println("初期化処理");
if(1 == 1) {
return "errorPage";
}
departmentDtoList = employeeLogic.getAllDepartmen...
return null;
}
----------------------------------------------------...
2.faces-config.xml に、以下を追加
----------------------------------------------------...
<navigation-rule>
<navigation-case>
<from-outcome>errorPage</from-outcome>
<to-view-id>/employee/errorPage.html</to-view...
<redirect/>
</navigation-case>
</navigation-rule>
----------------------------------------------------...
3. /employee/errorPage.html を作ります。中身はなんでも...
~
この状態で、メニューからEmployee Management をクリック...
EmployeeSearchInitActionImpl#initialize が2回実行されて...
~
この2回実行されている現象が関係しているのかどうかはわ...
こちらの作成中のシステムだと、2回目に同じ処理(上の例だ...
Employee Management をクリックする)をすると、ページの初...
無限に実行されてしまいます。~
~
org.seasar.jsf.runtime.ErrorPageManagerImpl を使ってい...
エラーログに余計なログを吐きたくないため(log4j で、ERROR...
管理者へメールが送信される設定になっている)なのですが、~
ためしに、org.seasar.jsf.runtime.ErrorPageManagerImpl を...
にしてみると、1回めは正しくエラーページが表示されるので...
2回目以降はブラウザに例外情報が表示されてしまい、エラー...
されません。~
~
ちょっと原因も回避方法もわからず困っているのですが、手...
ような情報があれば、教えていただけると大変助かります。~
~
~
''Answer''~
※本件のバグフィックスリリースはS2JSF 1.0.14で行われた。~
~
現象を修正しました。~
~
■原因~
~
dispatchでsubmitした画面へ遷移した際に、再度decode処理が...
れていたことでした。~
~
■修正内容~
~
リクエスト内で初回のLifecycleでのみ~
-APPLY_REQUEST_VALUES (2)~
-PROCESS_VALIDATIONS (3)~
-UPDATE_MODEL_VALUES (4)~
-INVOKE_APPLICATION (5)~
>のフェーズを実行するように変更しました。~
(dispatch後のLifecycleではスキップします。)~
初期化Actionは RENDER_RESPONSE (6) フェーズで行っているた...
この変更の影響を受けません。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-January/00...
http://ml.seasar.org/archives/seasar-user/2006-January/00...
http://ml.seasar.org/archives/seasar-user/2006-January/00...
//
**m:rendered使用時のActionが呼ばれない [#f521f6ab]
>[[S2サポーター]] (2006-04-29 (土) 18:43:04)~
~
''Question''~
<input type="submit" value="追加" m:action="#{maintenanc...
というボタンがあり、押すと、バリデーション → confirm ア...
~
これを、~
<span m:rendered="#{projectForm.mode == 'add'}" >
<input type="submit" value="追加" m:action="#{maintenanc...
</span>
とすると、バリデーションは実行されますが、confirm アクシ...
~
''Answer''~
原因がわかりました。~
ボタン押下時にActionが実行されないのは、押下のタイミング...
27行目のrenderedがfalseと評価されるためです。~
~
-viewLogFormはREQUESTスコープにあるので、ボタン表示時と押...
押下時にはselectedLogFile属性は初期値""になっています。~
結果、押下時にはspanのrenderedはfalseになります。~
-renderedがfalseのUIComponent配下は、encodeがスキップされ...
-ボタンのencodeがスキップされるため、Actionが実行されませ...
>ということが起こっています。~
~
回避策としては、viewLogFormをSESSIONスコープへ置くか、hid...
ませんが)といった方法があるかと思います。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-December/0...
http://ml.seasar.org/archives/seasar-user/2006-January/00...
//
**S2JSF AOPによるページ遷移の方法 [#hd47ee5d]
>[[S2サポーター]] (2006-04-29 (土) 18:34:55)~
~
''Question''~
現在S2JSFでいろいろと試しています。~
やりたい事は、~
~
AOPでログイン判定~
ログイン未なら~
ページパスを指定して遷移~
~
を考えているのですが~
S2JSFでは何を呼び出して画面の遷移をしたらいいのかがわかり...
~
~
''Answer''~
AspectをActionへ掛けることを想定されているのですよね?~
~
JSFでの画面遷移は、ActionがreturnするStringで決まります。~
ですので、Aspectで次画面を示すStringをreturnすればOKと思...
~
簡単な例をあげますと...~
faces-config.xmlへ次のように書いている場合には、Actionへ...
けたAspectにて"login"をreturnすることで/login.htmlへ遷移...
ます。~
~
<navigation-rule>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/login.html</to-view-id>
</navigation-case>
</navigation-rule>
~
参考になれば幸いです。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-March/0052...
http://ml.seasar.org/archives/seasar-user/2006-March/0052...
//
**formのaction属性を指定したい [#wbe5379e]
>[[S2サポーター]] (2006-04-29 (土) 17:59:10)~
~
''Question''~
S2JSFでは自動的にform actionを自画面のREQUEST URIか何かを...
考えてよろしいでしょうか。~
~
また、actionを手動で設定することはできるのでしょうか。~
~
~
>''Answer''~
m:passthrough="true"を属性に指定する事でHTMLのタグがその...
以下を参考に試して頂けますか?~
~
<form name="hoge" method="post" action="/add.html" m:pas...
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-March/0053...
http://ml.seasar.org/archives/seasar-user/2006-March/0053...
//
**<input type="password">のm:value属性で指定されたDtoの値...
>[[S2サポーター]] (2006-04-29 (土) 16:40:29)~
~
''Question''~
-環境~
--S2Container 2.3.7 ~
--S2JSF 1.0.14~
--S2JSF-example 1.0.14~
--Apache-Tomcat-5.5.12~
--JDK1.5.0_03~
~
-現象~
>
<input type="password">のm:value属性で指定されたDtoの値が~
HTMLに反映されず空で表示される。(value属性がHTMLに出力さ...
~
-期待する動作~
Dtoの属性値が<input type="password">のvalue属性に設定され...
HTMLが生成される。~
>
''Answer''~
inputの属性に m:redisplay="true" を追加してみていただけま...
か? 値が表示されると思います。~
~
password値がデフォルトで表示されない(redisplay="false")の...
JSFの仕様です。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-April/0054...
http://ml.seasar.org/archives/seasar-user/2006-April/0054...
**HTMLを書いたとおりに出力したい [#deaa9c7f]
m:passthrough="true" による素のHTML出力
次に示すhtmlを s2jsf-example/test/test.html として作成し...
01:<html xmlns:m="http://www.seasar.org/maya">
02:<body>
03:<form>
04:Test
05:</body>
06:</html>
実際の出力結果は以下のようになります。
01:<html xmlns:m="http://www.seasar.org/maya">
02:<body>
03:<form id="_id9" name="_id9" method="post"
action="/s2jsf-example/test/test.html" enctype="a...
04:Test
05:</body>
06:</html>
ここで任意にname属性やaction属性を指定したい場合には、次...
01:<html xmlns:m="http://www.seasar.org/maya">
02:<body>
03:<form name="testForm" action="hoge.html" method="post...
04:Test
05:</body>
06:</html>
m:passthrough="true"を指定した場合の出力結果は以下のよう...
01:<html xmlns:m="http://www.seasar.org/maya">
02:<body>
03:<form action="hoge.html" name="testForm" method="post">
04:Test
05:</body>
06:</html>
m:passthrough="true"を指定した場合は、m:passthrough="true...
formタグだけではなく、他のinputタグ等に関しても同様の指定...
**JavaScriptから任意のActionを実行したい [#eeb456fd]
ラジオボタンやチェックボックスのクリック時に指定したActio...
add.htmlのformタグ以降を以下のように変更します
01:<form id="form1">
02:<a id="dummy1" m:action="#{addAction.calculate}"/>
03:<input type="checkbox" onclick="doAction();"/>calcula...
04:<script type="text/javascript">
05:<!--
06:function doAction() {
07: var f=document.forms['form1'];
08: f.target='';
09: f.elements['form1:_link_hidden_'].value='form1:dumm...
10: f.submit();
11: return false;
12:}
13://-->
14:</script>
1行目でformタグにid属性を設定します(今回は"form1")。
2行目で呼び出したいactionを設定したダミーのanchorを記述し...
4行目から14行目に呼び出したいJavascriptを記述します。
8行目でformのtargetをクリアします。
11行目で呼び出したいactionのidを指定しています。指定方法...
これによりJavascriptから指定アクションを呼び出す事が可能...
**カスタムバリデータにおける他の入力値参照方法 [#n0b5519b]
TODO
**ファイルをアップロードしたい [#o8f96c6b]
ファイルアップロードサンプルを紹介します。
jsf.diconに以下のMyFacesの拡張タグを追加します
<initMethod name="addTaglibUri">
<arg>"x"</arg>
<arg>"http://myfaces.sourceforge.net/tld/myfaces_ext_...
</initMethod>
次にHTMLを作成します
01:<html xmlns:m="http://www.seasar.org/maya">
02:<head>
03:<meta http-equiv="Content-Type" content="text/html; c...
04:<title>UploadSample</title>
05:</head>
06:<body>
07:<form enctype="multipart/form-data">
08:<span m:inject="x:inputFileUpload" m:value="#{hogeDto...
09:<input type="submit" value="uploadSample"/>
10:</form>
11:</body>
12:</html>
08行目のhogeDtoを定義します
package examples.jsf.dto;
import java.io.Serializable;
import org.apache.myfaces.custom.fileupload.UploadedFile;
public class HogeDto implements Serializable {
public static final String uploadedFile_BINDING = "b...
private UploadedFile uploadedFile;
public UploadedFile getUploadedFile() {
return this.uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFil...
this.uploadedFile = uploadedFile;
System.out.println("uploadFileSize["+uploadedFil...
}
}
これでファイルのアップロードが可能です。ファイルを指定し...
「〜設定をスキップします」のWARNログを出力を出力しないよ...
詳しくは[[BindingAnnotation:http://s2container.seasar.org...
**ファイルダウンロードをしたい [#g8b1599e]
TODO
**FacesContextをDIしたい [#eea82682]
まず以下のようにdiconファイルにFacesContext#getCurrentIns...
<component name="facesContext" instance="request">
@javax.faces.context.FacesContext@getCurrentInstance()
</component>
あとはFacesContextを利用したいコンポーネントでsetFacesCon...
private FacesContext facesContext;
public void setFacesContext(FacesContext facesContext) {
this.facesContext = facesContext;
}
※注意事項としましては、FacesContextを利用するコンポーネン...
コンポーネントのinstance属性を"request"または"prototype"...
**JavaScriptを使用したくない [#r66cf750]
''Question''
ブラウザがJavaScriptをOFFにしている場合でも、アプリケーシ...
''Answer''
JavaScriptを使用するJSFタグを使用しないようにしましょう。
そのJSFタグはCommandLinkです。
- CommandLinkは使用しない
- 画面遷移のLinkはOutputLinkを使用する
- formをサブミットする場合は、CommandLinkではなく、Comman...
とすればOKです。
S2JSFでは
<a m:action="fooAction">foo</a>
のようにa要素にaction属性があるとCommandLinkとして扱いま...
action属性が無い場合↓はOutputLinkとして扱います。
<a href="foo.html">foo</a>
**画面から"null"を入力すると、対応するBeanのプロパティにn...
-Q: http://ml.seasar.org/archives/seasar-user/2006-Novemb...
-A: http://ml.seasar.org/archives/seasar-user/2006-Novemb...
**メモリ消費量を抑えるためにSessionにキャッシュされるコン...
''Question''
メモリ消費量を抑えるために Sessionにキャッシュされるコン...
''Answer''
web.xmlに以下のように設定することで、Session上にキャッシ...
<context-param>
<param-name>
org.seasar.jsf.UI_VIEW_ROOT_CACHE_SIZE
</param-name>
<param-value>10</param-value>
</context-param>
終了行:
[[FAQ]]
*S2JSF [#j0955499]
#contents
**formのdisabled指定でsessionコンポーネントが破壊される [...
>[[S2サポーター]] (2006-04-29 (土) 19:54:01)~
~
''Question''~
instance="session" としたコンポーネントのデータを~
form の input タグで disbaled指定して表示すると、~
表示そのものは元々の値が表示されるのですが、~
その後、submit するとそのデータが壊されてしまいます。~
~
表示している元々の内容にかかわらず、セッターが null で~
呼ばれてしまうのが原因ですが、これは仕様でしょうか?~
~
また、仕様だとすると回避する方法はありませんでしょうか?~
~
セッターが呼ばれないか、せめて表示している値で再度~
呼ばれればいいのですが、~
null で呼ばれて壊されてしまうと~
困ってしまいます。~
~
− hoge.html −−−−−−−−−−
<html xmlns:m="http://www.seasar.org/maya">
<head>
<meta http-equiv="Content-Type" content="text/html; char...
<title>Hoge</title>
</head>
<body>
<form>
<input type="text" disabled="true" m:value="#{hogeDto....
<input type="submit" value="submit"/>
</form>
</body>
</html>
− hoge.java −−−−−−−−−−
package examples.jsf.dto;
public class HogeDto {
private String hoge;
public String getHoge() {
return hoge;
}
public void setHoge(String hoge) {
System.out.println(hoge);
this.hoge = hoge;
}
}
− hoge.dicon −−−−−−−−−−
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Contain...
"http://www.seasar.org/dtd/components21.dtd">
<components>
<component name="hogeDto" class="examples.jsf.dt...
<property name="hoge">"foo"</property>
</component>
</components>
~
~
''Answer''~
S2JSFを修正完了しました。~
S2JSF 1.0.10から反映されています。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**ファイルダウンロード後にIllegalStateExceptionエラー発生...
>[[S2サポーター]] (2006-04-29 (土) 19:47:12)~
~
''Question''~
ダウンロードのプログラムを下記のように実装しファイルのダ...
その後の処理でIllegalStateExceptionエラーが発生して落ちて...
~
・環境~
Java 1.5.0 Update5~
Tomcat 5.5.12~
~
Seasar2 2.2.11~
S2JSF 1.0.28~
Myfaces 1.0.8~
~
~
・ソース~
~
static public void download(HttpServletResponse response...
response.setContentType("application/octet-stream;ch...
response.setHeader("Content-Disposition","attachment...
PrintWriter out = response.getWriter();
try{
// 各行の内容を繰り返し出力
for(int i = 0; i < line.length; i++){
out.print(line[i]);
out.print(System.getProperty("line.separator"));
}
}
finally {
if(out != null){
out.close();
}
}
}
~
~
''Answer''~
~
下記2つの方法で対応可能~
~
【Answer1】~
プログラム中で~
response.getWriter();~
している個所を、~
response.getOutputStream();~
へ変更するとどうでしょうか?~
~
OutputStreamWriter osw = new~
OutputStreamWriter(response.getOutputStream(), encoding);~
PrintWriter out = new PrintWriter(osw);~
~
といった具合に。~
~
【Answer2】~
web.xmlのfilter-mappingを変える方法でもうまくできそうな気...
します。~
~
現状はs2filterの後にextensionsFilterが適用されるようにな...
いますが、extensionsFilterの後にs2filterが適用されるよう...
を変更してみて頂けますか?~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**S2JSF1.0.8とmyfaces 1.1.0以降を組み合わせて使うと日付が...
>[[S2サポーター]] (2006-04-29 (土) 19:43:46)~
~
''Question''~
~
S2JSF1.0.8とmyfaces 1.1.0以降を組み合わせて使うと日付がず...
~
例えば~
s2jsf-exampleのmyfacesを1.1.0以降に入れ替えます。~
Employee Managementのcreateを押し、Hire Dateを ~
2005/12/01で新たに登録します。~
その後、登録したものを検索するとHire Dateを ~
2005/11/30と表示されます。~
データベースには2005/12/01で登録されています。~
~
myfaces 1.0.9では問題ありませんでした。~
myfacesの問題なのでしょうか?~
~
s2jsf-exampleのallconverter.diconに登録されてあるoutputDa...
を指定してみましたが同じ現象でした。~
~
ちょっと改造し時間まで表示させてみると2005/12/01 00:00:00...
2005/11/30 15:00:00となっています。~
~
9時間ほど前の時間が表示されているようです。~
~
~
''Answer''~
~
ちょっとmyfacesのソースを見てみました。~
myfaces 1.1.1だと、javax.faces.convert.DateTimeConverter...
だとデフォルトのタイムゾーン(GMT)を返すようです。~
myfaces 1.0.9だと、nullかどうかは判定せずそのまま返してい...
myfaces 1.0.9がどこでDateTimeConverterにタイムゾーンを設...
いきれていませんが・・・~
~
diconのConverterに以下のようにデフォルトのタイムゾーンを...
きちんと表示されるようになりました。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**S2JSF1.0.9でページを継承しないで初期化アクションを実行...
>[[S2サポーター]] (2006-04-29 (土) 19:41:59)~
~
''Question''~
S2JSF1.0.9でページを継承しないで初期化アクションを実行す...
~
s2jsf-exampleではemployeeSearch.htmlのm:extendsを削除し、~
<html xmlns:m="http://www.seasar.org/maya"
m:action="#{employeeSearchInitAction.initialize}">
として実行すると~
[ESSR0065]クラス(examples.jsf.action.impl.EmployeeSearch...
というエラーが出力されます。~
~
とりあえず初期化アクションが必要なものは、必ず何かのペー...
~
''Answer''~
~
問題に対応しました。~
次バージョンから反映されます。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**message タグでのメッセージ表示時に改行したい。 [#bd913b...
>[[S2サポーター]] (2006-04-29 (土) 19:41:10)~
~
''Question''~
リソースファイルにメッセージを定義した内容を、S2JSFの h:m...
改行(brタグ)をしたいのですが、URLエンコードされてしまう...
~
message タグでのメッセージ表示時に、改行する方法があれば...
~
''Answer''~
対象ブラウザがIE5.5以上でしたら、次のようなCSSを指定して...
~
table {
max-width: 100%;
table-layout: fixed;
}
pre{
word-wrap: break-word;
}
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-November/0...
//
**span m:valueで表示した内容が消える [#t6d846f0]
>[[S2サポーター]] (2006-04-29 (土) 19:31:42)~
~
''Question''~
S2JSFにおいて、<span m:value>によって表示した内容が消える~
という問題が発生しています。~
~
■現象~
~
select → edit → confirm のような画面の流れがあます。~
~
・select画面では、何かしらの項目をドロップダウンリスト...
・edit画面では、select画面で選択された値を以下のように...
~
<span m:value="#{testDto.testValue}"/>~
<input type="hidden" m:value="#{testDto.testValue}"/>~
~
・edit画面の他の入力項目にvalidationエラーが存在する場...
confirm画面に遷移せずにedit画面を再度表示する~
~
このような時に、<span m:value>で表示している内容が消え...
#hiddenで持っている値はHTMLのソースには出力されていま...
~
<input type="text" m:value="#{testDto.testValue}"/>で表...
内容は消えません。しかし、これでは編集できてしまいます。~
~
また、<input type="text" m:value="#{testDto.testValue}"...
とすると内容は消えてしまいます。~
~
回避策などありましたら、教えてください。~
~
''Answer''~
※下記はMLの投稿に記載されていたBlogの内容である。~
BlogのUML:http://d.hatena.ne.jp/higayasuo/20051027#1130...
~
~
JSFでhiddenで保持している項目を表示しているときに、バリデ...
ここでは、S2JSFをサンプルにして説明しますが、JSFでもあて...
あるデータの編集画面があり、その画面は、hogeというJavaBea...
この画面のhtmlは次のように作りがちです。~
~
<form>
<input type="hidden" m:value="#{hoge.aaa}"/>
<span m:value="#{hoge.aaa}"/>
...
</form>
~
残念ながら、上記のように作ると、項目のどこかでバリデーシ...
なぜなら、hiddenで保持している項目をJavaBeans(hoge)に反映...
じゃどうすれば良いのかというと、表示用のspanは、hiddenで...
~
<form id="hogeForm">
<input type="hidden" id="aaaHidden" m:value="#{hoge.aa...
<span m:value="#{param['hogeForm:aaaHidden']}"/>
...
</form>
~
これで、確かに、バリデーションエラーになったときに、hidde...
でも、問題があります。画面が最初に表示されるときは、hidde...
最終的な解決策は、次のようになります。~
~
<form id="hogeForm">
<input type="hidden" id="aaaHidden" m:value="#{hoge.aa...
<span m:value="#{hoge.aaa != null ? hoge.aaa :
param['hogeForm:aaaHidden']}"/>
...
</form>
~
最初に画面が表示されるときは、hoge.aaaが設定されているの...
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-October/00...
http://ml.seasar.org/archives/seasar-user/2005-October/00...
//
**HttpServletRequest の自動バインディングを行うとエラー [...
>[[S2サポーター]] (2006-04-29 (土) 19:28:37)~
~
''Question''~
S2JSF-Examples の、ForEach2ListActionImpl に、~
~
private HttpServletRequest request = null;
public void setRequest(HttpServletRequest aRequest) {
request = aRequest;
}
~
と定義して、サンプルを実行すると、~
~
java.lang.UnsupportedOperationException: getInstanceMode
at org.seasar.framework.container.impl.SimpleCompone...
at org.seasar.jsf.util.InvokeUtil.exportVariables(In...
:
(以下、省略)
~
と、例外が発生し、画面が遷移しません。~
~
JDK1.4.2、Tomcat5.0.28、S2JSF1.0.8 です。~
~
~
''Answer''~
原因わかりました。~
HttpServletRequest に対して、setter だけではなく、getter ...
setter だけにしたら、発生しなくなりました。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-October/00...
http://ml.seasar.org/archives/seasar-user/2005-October/00...
//
**ActionへHttpServletRequestがインジェクトされません [#ff...
-Q: http://ml.seasar.org/archives/seasar-user/2006-Octobe...
-A: http://ml.seasar.org/archives/seasar-user/2006-Octobe...
**validatorでNGの時のメッセージをalertで出力したい [#n91d...
>[[S2サポーター]] (2006-04-29 (土) 19:25:07)~
~
''Question''~
validatorでNGの時のメッセージをalertで出力したいのですが...
したらよいでしょうか?~
~
''Answer''~
JavaScriptでの入力チェックならalert出力するのは容易ですが...
JavaScriptで出力するとなると少々、力技が必要かなと思いま...
考えられるのは、画面のonload処理でバリデーションエラーが...
~
バリデーションエラーがあったかどうかの判断はformのhidden...
~
例えば、Action内でsessionに"ErrorMsg"というキーでエラーメ...
格納した場合、hiddenには以下のように記述し~
~
<input type="hidden" id="err" m:value="#{sessionScope['E...
~
onload時に、上記のhidden値をチェックして値があればalert表...
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-December/0...
http://ml.seasar.org/archives/seasar-user/2005-December/0...
//
**m:passthrough="true"を指定すると、convert属性が効かなく...
>[[S2サポーター]] (2006-04-29 (土) 19:23:00)~
~
''Question''~
~
m:passthrough="true"でいくつかの属性が無効果になってしま...
りませんか?~
現在、以下の記述(そのまま写したので取り留めの無い形になっ...
convert属性がききません。m:passthroughをとるとうまくいき...
うか?~
~
<input type="text" size="15" maxlength="10"
m:value="#{xp001_6.code}"
m:onchange="changeCode(this, 'name');"
id="code" name="code"
m:converter="#{rightPad10}"
m:passthrough="true"
onfocus="this.select();"
m:onKeyPress="return Help(this,event,'承認ルート一覧'...
~
''Answer''~
~
m:passthrough="true"をタグの属性に追加すると~
m:passthrough="true"以外の部分を、そのまま出力するという...
現在の仕様ですね。~
#m:passthorugh="true"にした場合とそうでない場合での~
出力されたHTMLのソースを見ると分かると思います。~
~
ちなみに下記ソースでm:passthrough="true"を使用したい目的は~
JavaScriptでformのcode.value等を利用したいからでしょうか?~
そうであれば、formのidがhogeの場合、JavaScriptからは~
下記textの値は、document.hoge['hoge:yone2'].valueで利用出...
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-December/0...
http://ml.seasar.org/archives/seasar-user/2005-December/0...
//
**selectボックスのクリックイベントにてm:immediate=trueと...
>[[S2サポーター]] (2006-04-29 (土) 19:17:05)~
~
''Question''~
~
以前[seasar-user:2550]で、S2JSFでselectボックスから選択し...
javascriptでsubmitする方法を教わりました。~
~
それに対し追加で質問がございます。~
~
上記の方法でsubmitした場合、m:immediate="true"とすると値...
つまり、リストから選択した値がm:valueで指定のプロパティに...
なぜこの現象が発生するのか教えてください。~
画面の挙動としては、submitはされますが選択する前と全く同...
m:immediate="true"の記述を削除すると正常に受け取れます。~
~
''Answer''~
~
m:immediate="true"の場合、updateModelフェーズがスキップさ...
値を受け取ることはできません。~
これは、JSFの仕様です。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**コンポーネントの名前によってactionのセッタが呼ばれない ...
>[[S2サポーター]] (2006-04-29 (土) 19:11:26)~
~
''Question''~
~
コンポーネントの名前によってactionのセッタが呼ばれなくな...
~
s2jsf-example の Add で~
AddDtoのコンポーネントネームを addDto から hogeAddDto に...
~
具体的には add.diconの
<component name="addDto" class="examples.jsf.dto.AddDto"...
AddActionImpl.javaの
void setAddDto(AddDto addDto)
add.htmlの
#{addDto.arg1}
などを、それぞれ、~
~
<component name="hogeAddDto" class="examples.jsf.dto.Add...
void setHogeAddDto(AddDto addDto)
#{hogeAddDto.arg1}
などと変更した場合、~
~
問題なく動作しますが、addDto を hAddDto に変更すると動作...
~
<component name="hAddDto" class="examples.jsf.dto.AddDto...
void setHAddDto(AddDto addDto)
#{hAddDto.arg1}
~
setHAddDto()が呼ばれなくなってしまうようなのですが、~
コンポーネント名には、つけてはいけない名前が存在するので...
~
~
''Answer''~
~
JavaBeansのネーミングルールにより、setHAddDto()のプロパテ...
HAddDtoです。hAddDtoではありません。~
コンポーネントの名前を変える必要があります。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**カスタムコンポーネント用tldファイルの配置場所について [...
>[[S2サポーター]] (2006-04-29 (土) 19:10:15)~
~
''Question''~
~
独自に作成した、JSF のカスタムコンポーネントをS2JSF で使...
TLDファイルは、どこに置き、どのような宣言をすればいいので...
~
たとえば、/WEB-INF/tlds/MyTag.tld を作成し、jsf.dicon に、~
~
<initMethod name="addTaglibUri">
<arg>"my"</arg>
<arg>"/WEB-INF/tlds/MyTag.tld"</arg>
</initMethod>
~
と宣言したところ、[Seasar-user:2453] でも報告されている...
エラーとなります。~
[Seasar-user:2454] のように、jar ファイルを作成して配置...
方法が取れない場合、たとえば、Webアプリケーションの中の一...
カスタムコンポーネントが存在し、その機能を、繰り返しテス...
といったような場合です。~
~
~
''Answer''~
~
1.0.13以前のバージョンは、tldは、jarファイルの中にあるも...
1.0.14で、利用できるようになりました。~
~
■利用方法~
~
1. WEB-INF/tlds/some.tldへtldファイルを配置~
2. web.xmlへtaglib要素を追加~
~
# web.xml~
<taglib>
<taglib-uri>/some_uri</taglib-uri>
<taglib-location>/WEB-INF/tlds/some.tld</taglib-locati...
</taglib>
~
taglib-locationは、実際に配置する箇所にします。~
~
3. jsf.diconへエントリを追加~
~
org.seasar.jsf.runtime.JsfConfigImplへinitMethodを追加。~
~
# jsf.dicon~
<initMethod name="addTaglibUri">
<arg>"some"</arg>
<arg>"http://somedomain/"</arg>
</initMethod>
~
第2引数はsome.tldのtaglib/uriとあわせます。~
~
4. jsf.diconを修正~
~
上部にある記述を変更します。~
~
# jsf.dicon~
<component class="org.seasar.jsf.runtime.ServletContextT...
<initMethod name="init"/>
<destroyMethod name="destroy"/>
</component>
~
↓変更~
~
<component class="org.seasar.jsf.runtime.CompositeTaglib...
<initMethod name="addTaglibManager">
<arg>
<component class="org.seasar.jsf.runtime.ServletCo...
<initMethod name="init"/>
<destroyMethod name="destroy"/>
</component>
</arg>
</initMethod>
<initMethod name="addTaglibManager">
<arg>
<component class="org.seasar.jsf.runtime.WebappCon...
<initMethod name="init"/>
<destroyMethod name="destroy"/>
</component>
</arg>
</initMethod>
</component>
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-January/00...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**validatorタグを利用すると例外が発生する [#a5947b7b]
>[[S2サポーター]] (2006-04-29 (土) 19:07:17)~
~
''Question''~
~
s2jsf 1.0.13 でS2ホットスワップモードを有効にしてvalidato...
ntimeExceptionが発生します。無効だと正常です。S2JSF Examp...
した。実行環境はWindows XP SP2、J2SDK1.4.2.10、Tomcat5.0....
~
RuntimeException:
java.lang.RuntimeException: Could not restore StateHold...
$Proxy53 (missing no-args constructor?)
~
~
''Answer''~
~
diconファイルにValidatorを登録すると、hotswapは利用できま...
faces-config.xmlに登録して使う分には大丈夫ですので、~
hotswapを使う場合は、そちらの方法をお試しください。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**Firefoxブラウザでプロパティ設定に失敗する [#zf916bea]
>[[S2サポーター]] (2006-04-29 (土) 19:00:53)~
~
''Question''~
~
作成中のシステムで、FireFox を使用したときにプロパティの...
~
たとえば、html に、~
~
<input type="button" value="送信" m:action="#{testAction...
~
とあり、TestActionBean に、~
~
private int selectedScheduleTimeID = 0;
private int selectedLocationID = 0;
(と、それぞれのsetter)~
~
が定義してあるような場合です。~
この場合、送信ボタンを押すと、sendMail() は実行されるので...
~
TestActionBean$$EnhancedByS2AOP$$17d2d70)のプロパティ(se...
理由はjava.lang.NumberFormatException: For input string:...
~
とのエラーになります。~
~
リクエスト内容を調べてみると、IE の場合、~
SelectScheduleComplete.html_SUBMIT=1&selectedScheduleTim...
(リクエストの前半は省略しています)
と、selectedScheduleTimeID、selectedLocationID に対して、...
FireFox の場合、~
SelectScheduleComplete.html_SUBMIT=1&selectedScheduleTim...
のように、"" が送信されています。~
これはブラウザに依存するのでどうしようもないと思うのです...
~
~
~
''Answer''~
~
S2JSFを修正しました。~
S2JSF 1.0.14から反映されています。~
~
■修正内容~
hidden値のクリアの際に、明示的に'null'を指定するよう以下...
~
org.seasar.jsf.render.html.HtmlCommandLinkRenderer.java~
org.seasar.jsf.render.html.HtmlFormRenderer.java~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**<body>タグにJavaScriptを埋め込む方法 [#x833b1bf]
>[[S2サポーター]] (2006-04-29 (土) 18:58:13)~
~
''Question''~
~
■出力形式例~
~
<body onunload="">
~
s2jsf-exampleに存在するlayout.htmlのbodyタグに「onunload=...
実行したサンプルにて表示しているHTMLを確認したところ、「<...
(onunload=""が表示されていない)~
~
~
''Answer''~
~
<body onunload="a">
のように、属性値があれば出力されます。~
(現状では、属性値がnullや""の場合は属性自体を出力していま...
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-February/0...
http://ml.seasar.org/archives/seasar-user/2006-February/0...
//
**ページの初期化処理で無限ループ発生 [#r71cfa5a]
>[[S2サポーター]] (2006-04-29 (土) 18:49:05)~
~
''Question''~
ページの初期化処理で無限ループが発生して困っています。~
~
s2jsf-example では、完全に再現ができないのですが、次の...
です。~
~
1. EmployeeSearchInitActionImpl#initialize を、以下の...
----------------------------------------------------...
public String initialize() {
System.out.println("初期化処理");
if(1 == 1) {
return "errorPage";
}
departmentDtoList = employeeLogic.getAllDepartmen...
return null;
}
----------------------------------------------------...
2.faces-config.xml に、以下を追加
----------------------------------------------------...
<navigation-rule>
<navigation-case>
<from-outcome>errorPage</from-outcome>
<to-view-id>/employee/errorPage.html</to-view...
<redirect/>
</navigation-case>
</navigation-rule>
----------------------------------------------------...
3. /employee/errorPage.html を作ります。中身はなんでも...
~
この状態で、メニューからEmployee Management をクリック...
EmployeeSearchInitActionImpl#initialize が2回実行されて...
~
この2回実行されている現象が関係しているのかどうかはわ...
こちらの作成中のシステムだと、2回目に同じ処理(上の例だ...
Employee Management をクリックする)をすると、ページの初...
無限に実行されてしまいます。~
~
org.seasar.jsf.runtime.ErrorPageManagerImpl を使ってい...
エラーログに余計なログを吐きたくないため(log4j で、ERROR...
管理者へメールが送信される設定になっている)なのですが、~
ためしに、org.seasar.jsf.runtime.ErrorPageManagerImpl を...
にしてみると、1回めは正しくエラーページが表示されるので...
2回目以降はブラウザに例外情報が表示されてしまい、エラー...
されません。~
~
ちょっと原因も回避方法もわからず困っているのですが、手...
ような情報があれば、教えていただけると大変助かります。~
~
~
''Answer''~
※本件のバグフィックスリリースはS2JSF 1.0.14で行われた。~
~
現象を修正しました。~
~
■原因~
~
dispatchでsubmitした画面へ遷移した際に、再度decode処理が...
れていたことでした。~
~
■修正内容~
~
リクエスト内で初回のLifecycleでのみ~
-APPLY_REQUEST_VALUES (2)~
-PROCESS_VALIDATIONS (3)~
-UPDATE_MODEL_VALUES (4)~
-INVOKE_APPLICATION (5)~
>のフェーズを実行するように変更しました。~
(dispatch後のLifecycleではスキップします。)~
初期化Actionは RENDER_RESPONSE (6) フェーズで行っているた...
この変更の影響を受けません。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-January/00...
http://ml.seasar.org/archives/seasar-user/2006-January/00...
http://ml.seasar.org/archives/seasar-user/2006-January/00...
//
**m:rendered使用時のActionが呼ばれない [#f521f6ab]
>[[S2サポーター]] (2006-04-29 (土) 18:43:04)~
~
''Question''~
<input type="submit" value="追加" m:action="#{maintenanc...
というボタンがあり、押すと、バリデーション → confirm ア...
~
これを、~
<span m:rendered="#{projectForm.mode == 'add'}" >
<input type="submit" value="追加" m:action="#{maintenanc...
</span>
とすると、バリデーションは実行されますが、confirm アクシ...
~
''Answer''~
原因がわかりました。~
ボタン押下時にActionが実行されないのは、押下のタイミング...
27行目のrenderedがfalseと評価されるためです。~
~
-viewLogFormはREQUESTスコープにあるので、ボタン表示時と押...
押下時にはselectedLogFile属性は初期値""になっています。~
結果、押下時にはspanのrenderedはfalseになります。~
-renderedがfalseのUIComponent配下は、encodeがスキップされ...
-ボタンのencodeがスキップされるため、Actionが実行されませ...
>ということが起こっています。~
~
回避策としては、viewLogFormをSESSIONスコープへ置くか、hid...
ませんが)といった方法があるかと思います。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2005-November/0...
http://ml.seasar.org/archives/seasar-user/2005-December/0...
http://ml.seasar.org/archives/seasar-user/2006-January/00...
//
**S2JSF AOPによるページ遷移の方法 [#hd47ee5d]
>[[S2サポーター]] (2006-04-29 (土) 18:34:55)~
~
''Question''~
現在S2JSFでいろいろと試しています。~
やりたい事は、~
~
AOPでログイン判定~
ログイン未なら~
ページパスを指定して遷移~
~
を考えているのですが~
S2JSFでは何を呼び出して画面の遷移をしたらいいのかがわかり...
~
~
''Answer''~
AspectをActionへ掛けることを想定されているのですよね?~
~
JSFでの画面遷移は、ActionがreturnするStringで決まります。~
ですので、Aspectで次画面を示すStringをreturnすればOKと思...
~
簡単な例をあげますと...~
faces-config.xmlへ次のように書いている場合には、Actionへ...
けたAspectにて"login"をreturnすることで/login.htmlへ遷移...
ます。~
~
<navigation-rule>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/login.html</to-view-id>
</navigation-case>
</navigation-rule>
~
参考になれば幸いです。~
~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-March/0052...
http://ml.seasar.org/archives/seasar-user/2006-March/0052...
//
**formのaction属性を指定したい [#wbe5379e]
>[[S2サポーター]] (2006-04-29 (土) 17:59:10)~
~
''Question''~
S2JSFでは自動的にform actionを自画面のREQUEST URIか何かを...
考えてよろしいでしょうか。~
~
また、actionを手動で設定することはできるのでしょうか。~
~
~
>''Answer''~
m:passthrough="true"を属性に指定する事でHTMLのタグがその...
以下を参考に試して頂けますか?~
~
<form name="hoge" method="post" action="/add.html" m:pas...
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-March/0053...
http://ml.seasar.org/archives/seasar-user/2006-March/0053...
//
**<input type="password">のm:value属性で指定されたDtoの値...
>[[S2サポーター]] (2006-04-29 (土) 16:40:29)~
~
''Question''~
-環境~
--S2Container 2.3.7 ~
--S2JSF 1.0.14~
--S2JSF-example 1.0.14~
--Apache-Tomcat-5.5.12~
--JDK1.5.0_03~
~
-現象~
>
<input type="password">のm:value属性で指定されたDtoの値が~
HTMLに反映されず空で表示される。(value属性がHTMLに出力さ...
~
-期待する動作~
Dtoの属性値が<input type="password">のvalue属性に設定され...
HTMLが生成される。~
>
''Answer''~
inputの属性に m:redisplay="true" を追加してみていただけま...
か? 値が表示されると思います。~
~
password値がデフォルトで表示されない(redisplay="false")の...
JSFの仕様です。~
~
''参考投稿''~
http://ml.seasar.org/archives/seasar-user/2006-April/0054...
http://ml.seasar.org/archives/seasar-user/2006-April/0054...
**HTMLを書いたとおりに出力したい [#deaa9c7f]
m:passthrough="true" による素のHTML出力
次に示すhtmlを s2jsf-example/test/test.html として作成し...
01:<html xmlns:m="http://www.seasar.org/maya">
02:<body>
03:<form>
04:Test
05:</body>
06:</html>
実際の出力結果は以下のようになります。
01:<html xmlns:m="http://www.seasar.org/maya">
02:<body>
03:<form id="_id9" name="_id9" method="post"
action="/s2jsf-example/test/test.html" enctype="a...
04:Test
05:</body>
06:</html>
ここで任意にname属性やaction属性を指定したい場合には、次...
01:<html xmlns:m="http://www.seasar.org/maya">
02:<body>
03:<form name="testForm" action="hoge.html" method="post...
04:Test
05:</body>
06:</html>
m:passthrough="true"を指定した場合の出力結果は以下のよう...
01:<html xmlns:m="http://www.seasar.org/maya">
02:<body>
03:<form action="hoge.html" name="testForm" method="post">
04:Test
05:</body>
06:</html>
m:passthrough="true"を指定した場合は、m:passthrough="true...
formタグだけではなく、他のinputタグ等に関しても同様の指定...
**JavaScriptから任意のActionを実行したい [#eeb456fd]
ラジオボタンやチェックボックスのクリック時に指定したActio...
add.htmlのformタグ以降を以下のように変更します
01:<form id="form1">
02:<a id="dummy1" m:action="#{addAction.calculate}"/>
03:<input type="checkbox" onclick="doAction();"/>calcula...
04:<script type="text/javascript">
05:<!--
06:function doAction() {
07: var f=document.forms['form1'];
08: f.target='';
09: f.elements['form1:_link_hidden_'].value='form1:dumm...
10: f.submit();
11: return false;
12:}
13://-->
14:</script>
1行目でformタグにid属性を設定します(今回は"form1")。
2行目で呼び出したいactionを設定したダミーのanchorを記述し...
4行目から14行目に呼び出したいJavascriptを記述します。
8行目でformのtargetをクリアします。
11行目で呼び出したいactionのidを指定しています。指定方法...
これによりJavascriptから指定アクションを呼び出す事が可能...
**カスタムバリデータにおける他の入力値参照方法 [#n0b5519b]
TODO
**ファイルをアップロードしたい [#o8f96c6b]
ファイルアップロードサンプルを紹介します。
jsf.diconに以下のMyFacesの拡張タグを追加します
<initMethod name="addTaglibUri">
<arg>"x"</arg>
<arg>"http://myfaces.sourceforge.net/tld/myfaces_ext_...
</initMethod>
次にHTMLを作成します
01:<html xmlns:m="http://www.seasar.org/maya">
02:<head>
03:<meta http-equiv="Content-Type" content="text/html; c...
04:<title>UploadSample</title>
05:</head>
06:<body>
07:<form enctype="multipart/form-data">
08:<span m:inject="x:inputFileUpload" m:value="#{hogeDto...
09:<input type="submit" value="uploadSample"/>
10:</form>
11:</body>
12:</html>
08行目のhogeDtoを定義します
package examples.jsf.dto;
import java.io.Serializable;
import org.apache.myfaces.custom.fileupload.UploadedFile;
public class HogeDto implements Serializable {
public static final String uploadedFile_BINDING = "b...
private UploadedFile uploadedFile;
public UploadedFile getUploadedFile() {
return this.uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFil...
this.uploadedFile = uploadedFile;
System.out.println("uploadFileSize["+uploadedFil...
}
}
これでファイルのアップロードが可能です。ファイルを指定し...
「〜設定をスキップします」のWARNログを出力を出力しないよ...
詳しくは[[BindingAnnotation:http://s2container.seasar.org...
**ファイルダウンロードをしたい [#g8b1599e]
TODO
**FacesContextをDIしたい [#eea82682]
まず以下のようにdiconファイルにFacesContext#getCurrentIns...
<component name="facesContext" instance="request">
@javax.faces.context.FacesContext@getCurrentInstance()
</component>
あとはFacesContextを利用したいコンポーネントでsetFacesCon...
private FacesContext facesContext;
public void setFacesContext(FacesContext facesContext) {
this.facesContext = facesContext;
}
※注意事項としましては、FacesContextを利用するコンポーネン...
コンポーネントのinstance属性を"request"または"prototype"...
**JavaScriptを使用したくない [#r66cf750]
''Question''
ブラウザがJavaScriptをOFFにしている場合でも、アプリケーシ...
''Answer''
JavaScriptを使用するJSFタグを使用しないようにしましょう。
そのJSFタグはCommandLinkです。
- CommandLinkは使用しない
- 画面遷移のLinkはOutputLinkを使用する
- formをサブミットする場合は、CommandLinkではなく、Comman...
とすればOKです。
S2JSFでは
<a m:action="fooAction">foo</a>
のようにa要素にaction属性があるとCommandLinkとして扱いま...
action属性が無い場合↓はOutputLinkとして扱います。
<a href="foo.html">foo</a>
**画面から"null"を入力すると、対応するBeanのプロパティにn...
-Q: http://ml.seasar.org/archives/seasar-user/2006-Novemb...
-A: http://ml.seasar.org/archives/seasar-user/2006-Novemb...
**メモリ消費量を抑えるためにSessionにキャッシュされるコン...
''Question''
メモリ消費量を抑えるために Sessionにキャッシュされるコン...
''Answer''
web.xmlに以下のように設定することで、Session上にキャッシ...
<context-param>
<param-name>
org.seasar.jsf.UI_VIEW_ROOT_CACHE_SIZE
</param-name>
<param-value>10</param-value>
</context-param>
ページ名: