上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

役に立ったらぽちっとよろしく。 人気ブログランキングへ

怪奇現象… [2008/10/28 (火)]

昔のホラー映画でなんかテレビに悪霊がいてって話があったけど、うちのPCも最近やたらと怪奇現象が多い。どうもこれにも悪霊が取り憑いたっぽい…。そう、うちのPCでは悪魔の言葉とおぼしき意味不明の文章がログにたまるは、血で綴られたような赤いエラーメッセージが出るは、独りでにプログラムが停止するは…。そのうち本人もバグの階段を…
┌(。ρ。┌ )┐三三三   …て感じで降りていくに違いない。(ネタ古過ぎ…)

さてさて、映画ではエクソシストが悪霊を退治してくれるらしいけども、現実エクソシストと思って頼ったフレームワーク(JSF)が悪霊以上に凶悪な気がするこの頃。…いや、でも実はそれは、おいらが既にアンチパターンに取り憑かれていて…だからエクソシストが憎いのか(恐)!…そんな感じの今日のネタ…。(つまり、簡単すぎてJSFが間違ってるとも思えない…何かおいらに見落としがあるに違いないって事(爆!!))

まず、コンバータを設定したValueExpressionを参照する入力コンポーネントを用意。それに空の文字列を入力、そして他のコンポーネントにValidationフェーズで検証エラーの起きる値を入力してサブミット。すると空の文字列を入力したはずなのに…ValueExpressionの値が優先されて元に戻っちゃう…。


<h:form>
    <-- 検証エラーをおこすために何も入力しない -->
    <h:inputText id="required" required="#{true}"/>
    <h:message for="required"/>
    <-- 空文字を入力しても元の値に戻る -->
    <h:inputText id="hasInitial" value="#{testBean.value}">
        <f:convertNumber integerOnly="true"/>
    </h:inputText>
    <h:message for="hasInitial"/>
    <h:commandButton/>
</h:form>

どうもコンバータがnullを返して、それがlocalValueとして設定されて、最後のgetValue()がJavaDocによると、localValueがnullならValueExpressionを使うって書いてあるので、たぶんこれだ…。うーん、isLocalValueSetとかで切り分けてくれると思ってたんだけど…違うみたい。

上記の現象の画像による説明

うーん、、、単純なんだけど汎用的な解決策が見つからない…。JSFの欠陥?なわけないよな…こんな単純な所で…。とするとおいらの理解が足りてないって事か…うーん。

スポンサーサイト

役に立ったらぽちっとよろしく。 人気ブログランキングへ

コメント
この記事へのコメント
コメントを投稿する

トラックバック
この記事のトラックバックURL
この記事へのトラックバック
Copyright © ふらふら技術者の日記 All Rights Reserved.
Powered by FC2 Blog
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。