[Seasar-user:2822] [S2JSF] m:immediate の動作について

松山 大樹 t.matsuyama
2005年 11月 14日 (月) 16:48:18 JST


 松山です。
 Seasar2.3 早速、開発中のシステムに取り入れて使ってます。
 便利です。楽です。

 で、S2JSF の m:immediate についての質問です。
 Seasar2.3 + S2JSF1.0.9 です。

 上半分がリンクの一覧表、下半分がメンテナンス部分になっている画面があります。
 初期状態は、追加モードになっていて、メンテナンス部に新規情報を入力するように
なっています。
 上半分のリンクのいずれかをクリックすると、クリックしたリンクに該当する
情報が、メンテナンス部に表示され、編集モードとなります。

-----------------------------------------------------------------------------
 上半分 
 <span m:inject="s:forEach" m:items="#{maintenanceProject.projectList}" m:var="project">
    <a m:action="#{maintenanceProject.select}" >
      <span m:value="#{project.projectName}" />
      <span m:inject="f:param" m:name="selectedProjectID" m:value="#{project.projectID}" />
    </a>
  </span>

 下半分
 <input type="text" id="projectName" m:value="#{projectForm.projectName}" m:required="true" />
  <input type="submit" value="実行" m:action="#{xxxxxxxx.execute}" />
-----------------------------------------------------------------------------

 このとき、メンテナンス部の項目は、m:required="true" となっているので、実行ボタンを
押したときに、必須チェックがかかります。
 このままだと、上半分のリンクをクリックしたときにも、バリデーションが実行されてしまい、
値を入力しないと遷移しないので、リンクに m:immediate を追加しました。

<a m:action="#{maintenanceProject.select}" >
 ↓
<a m:action="#{maintenanceProject.select}" m:immediate="true">

 すると、どういうわけか、下半分の<input type="text"> の、value に値がセットされ
なくなってしまいました。
 projectForm.projectName に値がセットされていないのかと、<input>タグの直前に、
<span m:value="#{projectForm.projectName}" /> を追加してやると、そちらには
表示されます。
 また、m:required="true" の項目に、適当な値を入れてから、リンクをクリックすると、
値は正常に表示されます。

 ちょっと困ってしまったので、回避方法など教えていただけると、非常に助かります。


-- 
::: 株式会社ワウワウ・コミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステム・インテグレートDiv.
:::  Web・マーケティング&コマンドセンターUnit.
:::   松山 大樹 - [E-MAIL ADDRESS DELETED]





Seasar-user メーリングリストの案内