yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2018/09 の記事
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
 垂オ訳ございませんが、現在このブログではトラックバックを受け入れていません。

 この記事に対してリンクされる場合には、こちらのURLをご利用ください。
http://void.yamicha.com/blog/blog.cgi?mode=view&number=756
 上記URLをトリプルクリックされますと、簡単にURL全体の選択が行えます。

※以下の記事がトラックバックされます。
新しい臓器提供意思表示カードをつくる改正
2010/03/28(Sun)23:41:43
 臓器移植法の改正により、今後は本人の明確な拒否の意思表明がない限り、家族同意で臓器提供が行われる可能性が出てきましたが、それにあわせて臓器提供意思表示カードの様式も見直されることとなりました。現在パブリックコメントが行われており、それも踏まえて様式の改定が行われるようです。
 これまでは臓器提供に本人同意が必須であったのが、今後は拒否の表明がなければ移植の可能性が出てくる点もさることながら、現行のカードはあまりにも分かりづらいものであったため、その意味でも改定は妥当といえるでしょう。所持者が意思を明確に伝えられ、しかもそれが尊重されるよう、カードはあくまで分かりやすいものでなければなりません。
 パブリックコメントのPDFによれば、現行のカードは以下の通りです。


 現行の臓器提供意思表示カード。

 参考までに、私は以下のデザインのカードを携帯しています。かなり初期のカードですので、現行のものとは表面の絵が違いますが、質問はおおむね同様です。


 初期の臓器提供意思表示カード。「厚生省」に時代を感じる。

 文面の主な差異を挙げておくと、私が所持している初期のカードでは、「眼球」の選択肢が2番にしかありませんが、現行のカードでは1番にも「眼球」が加わっています。また、初期のカードには「眼球(角膜)」と書いてあったのが、現行のものでは「眼球」のみとなっています。それ以外はほぼ同じです。
 一方、やはりパブリックコメントのPDFによれば、新しいカード案として以下のようなものが提示されています。


 新しい臓器提供意思表示カード案。

 以前のカードで発生する可能性のあった問題は、新しいカード案ではそれなりに解決されています。旧来のカードでは、それぞれの項目の下に臓器名が並べられていましたが、
(該当する1.2.3.の番号を○で囲んだ上で提供したい臓器を○で囲んで下さい)
  1. 私は、脳死の判定に従い、脳死後、移植の為に○で囲んだ臓器を提供します。
    (心臓・肺などの臓器名...)
  2. 私は、心臓が停止した死後、移植の為に○で囲んだ臓器を提供します。
    (腎臓・眼球などの臓器名...)
  3. 私は、臓器を提供しません。
 提供したい臓器名を○で囲んでいたとしても、番号を○で囲み忘れるとアウトでした。実は私も当初、このミスを犯したままでカードを携帯しており、新聞社のサイトで「記載不備が多い」旨の記事を読んでようやく気づくに至りました。途中からはある程度弾力的に解釈を行うようになり、記載に少々の不備があっても提供意思が認められるようにはなった模様ですが、臓器移植の開始当初は特に意思が厳密に解釈されていたため、このような些細な記載不備で臓器を提供できない状況が発生していました。
 また、旧カードでは「該当する1.2.3の番号を○で囲」むよう指示されていますが、「自分に該当するものを1つ選べ」という意味か、はたまた「自分に該当するものをすべて選べ」という意味なのかがあいまいです。その上で、仮に前者の意味として1のみを選択していると、「脳死の判定に従った脳死後に臓器を提供するのは構わないが、心臓停止した死後に臓器を提供するのには同意していない」とも解釈されうるという全く意味不明な状況が発生しかねませんでした。さらに、1と2の両方を選択していた場合でも、1については各種臓器に○をつけておいて、2では○を省略していた場合、やはり「脳死後に腎臓などを提供するのは構わないが、心臓停止後に腎臓を提供するのには同意していない」とみなされる余地がありました。
 新しい臓器移植法では、そもそも拒否の意思表示がない限りは臓器提供の可能性があるため、記載不備があっても拒否とみなされない限りは問題がなく、このようなミス自体があまり重要なものではなくなっていますが、それでも文面はある程度分かりやすく修正されています。
(1.2.3.いずれかの番号を○で囲んでください)
  1. 私は、脳死後及び心臓が停止した死後のいずれでも移植の為に臓器を提供します。
  2. 私は、心臓が停止した死後に限り、移植の為に臓器を提供します。
  3. 私は、臓器を提供しません。
(太字は引用者による。提供臓器選択欄は1と2で統一され、提供したい臓器にマル印をつける方式から、提供を希望しない臓器にバツ印をつける方式に変更)
 番号は単一選択であると明確に規定され、原理上おかしかった「脳死後に臓器は提供するが、心臓が停止した死後には臓器を提供しない」という誤った意思表明は存在しなくなっています。また、拒否の意思がなければ臓器提供の可能性がある新移植法を踏まえ、臓器も提供したいものを○で囲む方式から、提供したくないものを除外する方式に変わっています。臓器選択欄も1と2で統一され、意味不明な意思表示が発生しないようになっています。

 ただ、以前のカードに存在した問題はある程度解決されているとはいえ、新しいカード案にも疑問がないわけではありません。
 旧臓器移植法に基づいた旧来のカードには、主に次のような役割がありました。
  • 所持者が脳死判定に同意しているかを明確にすること
  • 所持者が臓器提供に同意しているか、いかなる臓器を提供するかを明確にすること
 これは以前の臓器移植法からして当然の要請でした。旧臓器移植法においては、「脳死は個体死か」という問題もある意味で棚上げされており、脳死判定を行うのにも臓器提供にも本人の同意が必要でした。したがって、本人が脳死判定に同意しているか(すなわち「脳死」を「自らの死」と認めるか)、また脳死判定に同意する場合は脳死後に、そうでなければ従来の方法での個体死認定後に、臓器を提供する意思があるかを確認するのが意思表示カードの主な役割となっていました。
 ところが、新臓器移植法では逆に、本人が拒否の意思を示さない限りは臓器提供がなされる可能性が出てきました。この場合、カードは以下のような役割を果たすことになります。
  • 所持者が条件付きで、あるいはいかなる場合でも臓器を提供しない意思を表明すること
  • 所持者が臓器提供自体には同意していても、特定の臓器は提供しない意思を表明すること
  • 所持者が臓器提供の意思があることを家族に対して明確にすること
 ここで重要なのは3番目です。
 これまでの臓器移植法においては、臓器を提供したくない場合はカードを持っても持たなくても同じでした。本人が書面(カード)で同意していなければ臓器提供は行われませんし、本人が同意している場合は遺族に確認がなされ、その同意があれば臓器提供が行われていました。この場合、そもそも本人の提供意思が明確でない限り、臓器提供の対象とはならず、遺族への確認は行われないわけですから、遺族に確認がなされる場合は必ず故人が提供意思を持っていることになり、「所持者が家族に意思を明確にする」という機能を考える必要はありませんでした。
 一方、新臓器移植法ではこれが逆転し、本人の拒否がない限り臓器提供の可能性があります。このケースでは、本人が提供の意思を表明している場合もあれば、していない場合もあります。すなわち、カードを持っても持たなくても提供がなされる可能性があるという点では同じなのですが、こちらは以前の場合とは違い、カードがなければ遺族が故人の意思を測りかねる恐れがあります。そうなると、本人が提供の意思を示していれば提供に同意したであろう遺族が、本人の意思が不明瞭であることを理由に提供を拒む可能性があり、せっかく臓器移植法を改定したにもかかわらず、移植の機会があまり増えない状況にもなりかねません。
 新カード案は、上で示した最初の2つの役割はおおむね満たしているものの、この役割については十分に満たしているか疑問があります。新しい制度自体が「何も表明しなければ提供の可能性あり」なのですから、カードが簡略化されること自体は当然の流れなのですが、それによって意思伝達の側面が希薄になるとすれば、問題があることは否めません。
 例えば、世の中の多くの人は移植についてあまり知識を持たないわけですが、そのような遺族が「故人の眼球の移植に同意するか」と問われたら、果たして抵抗なく同意できるでしょうか。しかも、旧来のカードであれば「眼球」に○をつける必要があり、眼球の提供は故人の意思であると分かりますが、新しいカードではバツ印さえついていなければ同意とみなされます。「バツがついていないから、提供は故人の意思だ」とみなすのは、「マルがついているから、提供は故人の意思だ」とみなすよりも明らかに困難です。せめて「提供の意思を明確にするために、臓器名を○で囲んでも構いません」の注意書きの1つでも入れておけば、それなりに改善される問題ではないでしょうか。
 また、以前に比べて大幅に改善されたとはいえ、例の「番号を○で囲む」スタイルにはあまり賛同できません。私が誤記した経験から申し上げて、あの方法は非常に見落としやすいのです。ここで誤記が発生すると、やはり所持者の意思があいまいになってしまい、意思表示媒体としての役目を十分果たせなくなる懸念があります。この方法を新カードでも用いるのであれば、せめて番号の手前にチェックボックスを置くなど、「ここはただの箇条書き項目ではなく、所持者が記入しなくてはならない部分」と印象付けるような工夫が欲しいところです。
 それから、大変に些細なことではありますが、このブログで以前にQRコードメーカーを作成した際に読んだ仕様書には、「QRコードの周囲4ピクセル分は、コード内の白部分と同じ色の余白でなくてはならない」と書かれていたよう記憶しています。まだ実物のカードが存在しないため、実際の寸法は分かりませんが、パブリックコメントのPDFファイルの画像を見る限り、背景のオレンジ色の部分がQRコードの余白に侵食しているようです。また、こちらは4ピクセル分離れているようにも離れていないようにも見えますが、もし「臓器移植ネットワーク」の「ク」の文字が4ピクセル以内に入っているなら、完全に仕様に反しています。最近の読み取り機器の性能からして、そうそうエラーは出ないはずですが、撮影時の周囲の明るさなどでも彩度は変化するのですから、誤って読み取られる可能性は常に存在しており、利用者に優しいとはいえません。
 また、せっかく良いカードを作っても、所持する人が増えなければ意味がありません。もし今後もカードがあまり普及せず、カード不所持につき遺族同意によって誰かの臓器が提供されたとして、もしその人が周囲に臓器提供反対の意を話していたり、カードによらない方法で提供を拒む意思を遺していたことが後で発覚すれば、新臓器移植法の概念自体が窮地に追い込まれかねません。拒否の意思を担保する意味でも、カードの普及を今以上に図る必要があります。

 JSF 2.0のカスタムコンポーネントでは、属性を使って値やメソッドを受け取ることができました。プロパティやメソッドも使えるとあって、これだけでもそれなりに様々な使い方が可能です。
 ただ、属性だけでは柔軟性の高いコンポーネントの作成は不可能ですし、できたとしても大量の属性を取らなくてはならず、逆に見通しが悪くなります。何らかの要素を記述できるなど、もっと柔軟性のある方法を使用したいところです。
 そんなこんなで探してみたところ、その方法はやはり存在していました。各種資料を読む限り、やり方はいくつか存在するようですが、今回はcomposite:insertChildren及びcomposite:renderFacetを使用しています。
 composite:insertChildrenは単純に、カスタムタグが持つ要素などの子ノードをそのまま貼り付けるもので、使い方は非常に簡単です。カスタムコンポーネントの側ではcomposite:interface内に特に何も書く必要がなく、単にcomposite:implementation内の好きな場所に<composite:insertChildren />を書くだけです。カスタムコンポーネントを使用する際には、その子ノードとして任意の要素なり何なりを持たせておけば、後はinsertChildrenの部分がそれに置き換わります。
 composite:renderFacetは名前つきinsertChildrenのようなものらしく、composite:interfaceで名前の記述が必要な上、renderFacetタグを使用する際にも名前を指定しなくてはならず、呼び出し側でも渡したいノードをf:facetでくくらなくてはなりませんが、より柔軟です。
 これらは併用しても動作するようで、その際にはf:facetの子ノードがそれぞれ対応するcomposite:renderFacetの部分に表示され、f:facetに含まれていない部分がcomposite:insertChildrenに表示されました(GlassFish v3 Previewの場合。他の実装では実験していません)。
 以下、前回のフォームの改良版として、これらの方法をそれぞれ用いたカスタムコンポーネントを作成及び使用しています。
/resources
 /comp
  customFormInput.xhtml
  customLabelInput.xhtml
/WEB-INF
 /classes
  /com
   /yamicha
    /custom
     CustomFormBean.java
 web.xml
customForm.xhtml
customLabel.xhtml
customResult.xhtml
 このうち、customFormInput.xhtml及びcustomForm.xhtmlがcomposite:insertChildrenを用いており、customLabelInput.xhtml及びcustomLabel.xhtmlがcomposite:renderFacetやf:facetを用いています。それ以外の点はほとんど同じです。CustomFormBeanはManagedBean、customResult.xhtmlは結果表示用ページで、これらは両者で同じものを使用しています。
 web.xmlは前回と全く同じです。
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>

  <display-name>JSF 2.0 Custom Component Servlet</display-name>
  <description>JSF 2.0 Custom Component Servlet</description>

  <servlet>
    <servlet-name>jsf20custom</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>jsf20custom</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
</web-app>
 CustomFormBean.javaも前回のCustomForm.javaと似たり寄ったりですが、今回はnameプロパティがfirstNameとlastNameになり、addressプロパティはaddress1とaddress2になっています。
package com.yamicha.custom;

import javax.ejb.*;
import javax.annotation.*;
import javax.faces.validator.ValidatorException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.faces.component.html.HtmlInputText;
import javax.faces.bean.*;
import javax.faces.event.*;
import java.util.*;

@ManagedBean @RequestScoped public class CustomFormBean
	implements java.io.Serializable{
	private String fname;
	private String lname;
	private String mail;
	private String webPage;
	private String address1;
	private String address2;

	public CustomFormBean(){
	}

	public String getFirstName(){
		return fname;
	}
	public String getLastName(){
		return lname;
	}
	public String getMail(){
		return mail;
	}
	public String getWebPage(){
		return webPage;
	}
	public String getAddress1(){
		return address1;
	}
	public String getAddress2(){
		return address2;
	}

	public void setFirstName(String n){
		fname = n;
	}
	public void setLastName(String n){
		lname = n;
	}
	public void setMail(String m){
		mail = m;
	}
	public void setWebPage(String w){
		webPage = w;
	}
	public void setAddress1(String a){
		address1 = a;
	}
	public void setAddress2(String a){
		address2 = a;
	}

	public void requiredValidator(FacesContext context ,
		UIComponent component , Object value){
		if(((String)value).isEmpty()){
			HtmlInputText input = (HtmlInputText)component;
			throw new ValidatorException(new FacesMessage(
				input.getLabel() + " は必須項目です。"));
		}
	}
}
 本題はここからです。まずはcomposite:insertChildrenを使用しているカスタムコンポーネント・customFormInput.xhtmlより。
<?xml version="1.0" encoding="Shift_JIS" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:composite="http://java.sun.com/jsf/composite">

  <composite:interface>
    <composite:attribute name="labelStyleClass" default="" />
    <composite:attribute name="inputStyleClass" default="" />
    <composite:attribute name="indent" default="15" />
    <composite:attribute name="label" />
  </composite:interface>

  <composite:implementation>
    <table border="0" width="90%">
      <tr>
        <td class="#{cc.attrs.labelStyleClass}">
          <h:outputText value="#{cc.attrs.label}" />
        </td>
      </tr>
      <tr>
        <table border="0" width="100%">
          <tr>
            <td width="#{cc.attrs.indent}"></td>
            <td class="#{cc.attrs.inputStyleClass}">
              <composite:insertChildren />
            </td>
          </tr>
        </table>
      </tr>
    </table>
    <br />
  </composite:implementation>
</html>
 前回作成したcustomInput.xhtmlとの違いといえば、せいぜいh:inputTextを使用していた部分が、今回はcomposite:insertChildrenに変わっているだけです。それに伴ってcomposite:interfaceでの属性の指定も少なくなっていますが、これは副次的な変化です。
 これはcustomForm.xhtmlで使用しています。
<?xml version="1.0" encoding="Shift_JIS" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:cc="http://java.sun.com/jsf/composite/comp">

<h:head>
  <title>JSF 2.0 Custom Component</title>
  <style type="text/css">
    td.label { background-color: #CCDDFF; }
  </style>
</h:head>

<h:body>
  <b>送信フォーム</b><br />
  <small>(*)必須項目</small>

  <h:form>
    <cc:customFormInput label="氏名(*)" labelStyleClass="label">
      氏名を入力してください。<br />
      First <h:inputText value="#{customFormBean.firstName}"
        validator="#{customFormBean.requiredValidator}"
        label="First Name" /> / 
      Last <h:inputText value="#{customFormBean.lastName}"
        validator="#{customFormBean.requiredValidator}"
        label="Last Name" />
    </cc:customFormInput>

    <cc:customFormInput label="メールアドレス(*)" labelStyleClass="label">
      メールアドレスを入力してください。<br />
      <h:inputText value="#{customFormBean.mail}" size="40"
        validator="#{customFormBean.requiredValidator}"
        label="メールアドレス" />
    </cc:customFormInput>

    <cc:customFormInput label="Web ページ" labelStyleClass="label">
      Web ページをお持ちなら、アドレスを入力できます。<br />
      <h:inputText value="#{customFormBean.webPage}" size="60" />
    </cc:customFormInput>

    <cc:customFormInput label="在住地域" labelStyleClass="label">
      公開可能な範囲で在住地域を入力できます。<br />
      <br />

      国・都道府県・州・市区町村<br />
      <h:inputText value="#{customFormBean.address1}" size="60" /><br />
      地域・番地<br />
      <h:inputText value="#{customFormBean.address2}" size="60" />
    </cc:customFormInput>

    <h:commandButton action="customResult" value="送信" />
  </h:form>
</h:body>

</html>
 今回はここで入力フォームを記述しています。これで前回のようにバリデータを渡す必要がなくなった他、何でも自由に記述できるようになっているため、上記のように複数個のh:inputTextを用意できたり、h:inputText以外のものを配置できたりと、自由度が増しています。
 これに対して、component:renderFacetを使用するコンポーネントも作成してみます。まずはカスタムコンポーネントのcustomLabelInput.xhtmlより。
<?xml version="1.0" encoding="Shift_JIS" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:composite="http://java.sun.com/jsf/composite">

  <composite:interface>
    <composite:attribute name="labelStyleClass" default="" />
    <composite:attribute name="inputStyleClass" default="" />
    <composite:attribute name="indent" default="15" />
    <composite:facet name="label" />
    <composite:facet name="form" />
  </composite:interface>

  <composite:implementation>
    <table border="0" width="90%">
      <tr>
        <td class="#{cc.attrs.labelStyleClass}">
          <composite:renderFacet name="label" />
        </td>
      </tr>
      <tr>
        <table border="0" width="100%">
          <tr>
            <td width="#{cc.attrs.indent}"></td>
            <td class="#{cc.attrs.inputStyleClass}">
              <composite:renderFacet name="form" />
            </td>
          </tr>
        </table>
      </tr>
    </table>
    <br />
  </composite:implementation>
</html>
 今度はcomponent:interface内にcomposite:facetを記述しています。ここでは、label及びformという名前のfacetを用いることを指定しています。また、insertChildrenの代わりにrenderFacetを用いています。
 ちなみに、これとは別にcomposite:insertFacetなるタグが存在しているようですが、こちらは使用しても全く機能しませんでした。どうもJSF 2.0人口は恐ろしく少ないらしく、検索してもこれといった資料が出てきませんでしたが、何か別の使い道があるのでしょうか。
 このカスタムコンポーネントは、customLabel.xhtmlで使用しています。
<?xml version="1.0" encoding="Shift_JIS" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:cc="http://java.sun.com/jsf/composite/comp">

<h:head>
  <title>JSF 2.0 Custom Component</title>
  <style type="text/css">
    td.label { background-color: #CCDDFF; }
  </style>
</h:head>

<h:body>
  <b>送信フォーム</b>

  <h:form>
    <cc:customLabelInput labelStyleClass="label">
      <f:facet name="label">
        氏名<small style="color: red">(必須)</small>
      </f:facet>
      <f:facet name="form">
        氏名を入力してください。<br />
        First <h:inputText value="#{customFormBean.firstName}"
          validator="#{customFormBean.requiredValidator}"
          label="First Name" /> / 
        Last <h:inputText value="#{customFormBean.lastName}"
          validator="#{customFormBean.requiredValidator}"
          label="Last Name" />
      </f:facet>
    </cc:customLabelInput>

    <cc:customLabelInput labelStyleClass="label">
      <f:facet name="label">
        メールアドレス<small style="color: red">(必須)</small>
      </f:facet>
      <f:facet name="form">
        メールアドレスを入力してください。<br />
        <h:inputText value="#{customFormBean.mail}" size="40"
          validator="#{customFormBean.requiredValidator}"
          label="メールアドレス" />
      </f:facet>
    </cc:customLabelInput>

    <cc:customLabelInput labelStyleClass="label">
      <f:facet name="label">
        Web ページ
      </f:facet>
      <f:facet name="form">
        Web ページをお持ちなら、アドレスを入力できます。<br />
        <h:inputText value="#{customFormBean.webPage}" size="60" />
      </f:facet>
    </cc:customLabelInput>

    <cc:customLabelInput labelStyleClass="label">
      <f:facet name="label">
        在住地域
      </f:facet>
      <f:facet name="form">
        公開可能な範囲で在住地域を入力できます。<br />
        <br />

        国・都道府県・州・市区町村<br />
        <h:inputText value="#{customFormBean.address1}" size="60" /><br />
        地域・番地<br />
        <h:inputText value="#{customFormBean.address2}" size="60" />
      </f:facet>
    </cc:customLabelInput>

    <h:commandButton action="customResult" value="送信" />
  </h:form>
</h:body>

</html>
 今回は入力フォームに加え、ラベルも自分で書けるようにしています。
 この両者はどちらも、customResult.xhtmlを結果表示ページとしています。
<?xml version="1.0" encoding="Shift_JIS" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:cc="http://java.sun.com/jsf/composite/comp">

<h:head>
  <title>JSF 2.0 Custom Component - Result</title>
</h:head>

<h:body>
  以下のデータが送信されました。

  <h:panelGrid border="1" columns="2">
    <h:outputText value="名前" />
    <h:panelGroup>
      <h:outputText
        value="#{customFormBean.firstName} #{customFormBean.lastName}" />
    </h:panelGroup>

    <h:outputText value="メールアドレス" />
    <h:outputText value="#{customFormBean.mail}" />

    <h:outputText value="Web ページアドレス" />
    <h:outputText value="#{customFormBean.webPage}" />

    <h:outputText value="在住地域" />
    <h:panelGroup>
      <h:outputText value="#{customFormBean.address1}" />
      <h:outputText value="#{customFormBean.address2}" />
    </h:panelGroup>
  </h:panelGrid>
</h:body>

</html>
カテゴリ [開発魔法][社会問題] [トラックバック 0][コメント 0]
<- 前の記事を参照 次の記事を参照 ->

- Blog by yamicha.com -