Ref: http://yoshio3.com/2011/01/

192 views
Skip to first unread message

Hiroshi Kubo

unread,
Feb 26, 2012, 1:48:59 AM2/26/12
to glas...@googlegroups.com
http://yoshio3.com/2011/01/の末尾につぎがあります。
---
余談:
上記、プロジェクトですが、web.xml の設定を Development
にすると画面中に下記のワーニングが表示されます。(すいません、原因がつかめていません。)

The button/link/text component needs to have a Form in its ancestry.
Please add <h:form>.
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>

下記のように、Production に変更するとワーニングは表示されません。

<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value>

原因がわかったら追記します
---

もし原因が判明していたら教えてください。つい最近,この現象に出会い悩まされました。

--
久保

Takayoshi Kimura

unread,
Feb 26, 2012, 8:03:18 PM2/26/12
to glas...@googlegroups.com
メッセージの通りformが抜けているからじゃないでしょうか。

> The button/link/text component needs to have a Form in its ancestry.
> Please add <h:form>.

UICommandとUIInputは<h:form>の中に書かなければならないので、body直下に
commandButtonを置くと怒られて当然な気がします。

> <h:body>
> <h:commandButton action="#{user.login_dummy}" value="Submit-Dummy"/><br/>
> <h:commandButton action="#{user.login}" value="Submit"/>
> </h:body>

Regards,
Takayoshi

Hiroshi Kubo

unread,
Feb 27, 2012, 8:37:03 AM2/27/12
to glas...@googlegroups.com
少し様子がわかりました。ご報告します。

添付のTabbedDataEntry.xhtmlファイルをNetBeansで Run File すると Firefoxは
"The form component needs to have a UIForm in its ancestry.
Suggestion: enclose the necessary components within"
というメッセージを含むviewを表示します。添付のviewWithWarning.pngは,三つのタブの一つ,"Phone Numbers" タブ
を選択した状態でのスクリーンショットです。

つぎにTabbedDataEntry.xhtmlファイルに含まれる<h:outputLabel > エレメントと <p:inputMask> エレメントを削除し
viewが三つのタブとコマンドボタンだけからなるようにします。すると viewから "The form component ..." というメッセージ
も消えます。

頂いたコメントの内容を確認します。

2012年2月27日10:03 Takayoshi Kimura <tki...@redhat.com>:
> メッセージの通りformが抜けているからじゃないでしょうか。

TabbedDataEntry.xhtmlファイルはFormを含んでおり form componentsはすべて
そのFormに属しています。ご確認ください。

>> The button/link/text component needs to have a Form in its ancestry.
>> Please add <h:form>.
>
> UICommandとUIInputは<h:form>の中に書かなければならないので、body直下に
> commandButtonを置くと怒られて当然な気がします。
>
>> <h:body>
>> <h:commandButton action="#{user.login_dummy}" value="Submit-Dummy"/><br/>
>> <h:commandButton action="#{user.login}" value="Submit"/>
>> </h:body>

警告メッセージ消滅効果をもったのは<h:outputLabel > エレメントと <p:inputMask> エレメント
の削除でした。<p:commandButton>エレメントは残したままです。

もう少し調査を続けてみます。

--
久保@横浜

TabbedDataEntry.xhtml
viewWithWarning.png

Takayoshi Kimura

unread,
Feb 27, 2012, 7:49:57 PM2/27/12
to glas...@googlegroups.com
PrimeFacesを使っている、というのが重要な情報ですね。

http://code.google.com/p/primefaces/issues/detail?id=1586
http://java.net/jira/browse/JAVASERVERFACES-1922

のあたりです。Mojarra 2.2-m01でFixとなっています。まだ2.2系はダウンロー
ドできないので、自分でビルドして確認するしかなさそうです。

Regards,
Takayoshi

At Mon, 27 Feb 2012 22:37:03 +0900,

Satoshi Kubo

unread,
Feb 27, 2012, 5:35:24 PM2/27/12
to glas...@googlegroups.com
おはようございます。
久保と申します。

ui:compositionを使用されているようですが、Template.xhtmlの内容はどうなっていますか?
(その内容がおかしいのかもしれません。)

また、bodyタグだけjsfのh:bodyを使用してませんが、良いんでしたっけ?

2012年2月27日22:37 Hiroshi Kubo <kubo....@gmail.com>:

--
Satoshi Kubo
mailto:mega...@gmail.com

Hiroshi Kubo

unread,
Feb 27, 2012, 10:43:26 PM2/27/12
to glas...@googlegroups.com
コメント,ありがとうございます。

2012年2月28日7:35 Satoshi Kubo <mega...@gmail.com>:

> ui:compositionを使用されているようですが、Template.xhtmlの内容はどうなっていますか?
> (その内容がおかしいのかもしれません。)

Template.xhtmlを添付します。お気づきの点がありましたら指摘ください。
>
> また、bodyタグだけjsfのh:bodyを使用してませんが、良いんでしたっけ?

ご指摘をうけてはじめて気がつきました。
NetBeans 7.1を使って,添付のTemplate.xhtmlファイルをNew>Facelets Templateによってつくり,
New>Facelets Template Client でテンプレートとしてTemplate.xhtmlを指定してクライアントファイルをつくっただけです。

Template.xhtmlに合わせて<body>を<h:body>に変えてみましたが現象に変化は起きませんでした。

--
久保

Template.xhtml

Hiroshi Kubo

unread,
Feb 28, 2012, 3:18:10 AM2/28/12
to glas...@googlegroups.com
Kimura-san,

2012年2月28日9:49 Takayoshi Kimura <tki...@redhat.com>:
> PrimeFacesを使っている、というのが重要な情報ですね。
>
> http://code.google.com/p/primefaces/issues/detail?id=1586

このページには興味深いものがあります。冒頭につぎあります。

| Status: WontFix
| Closed: Jun 2011

fix しないこととする。よってイシューはクローズする。と読めます。

2011.6から半年もたった2011.12.26に寄せられた comment 35は, fixが欲しい,と言っています。

| I agree, changing your project stage to "production" is NOT a solution.
| That setting is there for a reason and suppressing it is not a
solution. It's simply bad practice.
| We need a fix, not a work around.
| I have also had this issue with iceFaces, so I suspect it's more
complex then something in primefaces.

最後のコメントはつい最近の2012.2.5のcomment36です。これも似た内容です。

| I have read the entire thread, is there a resolution to this?
Setting it to production doesn't solve the root cause.
| Is this a PF or JSF impl issue? I'm using MyFaces impl and hitting this btw.

PrimeFacesの立場は "WontFix"。だとしたらJSF implのイシューになるんですか。

> http://java.net/jira/browse/JAVASERVERFACES-1922
>
> のあたりです。Mojarra 2.2-m01でFixとなっています。まだ2.2系はダウンロー
> ドできないので、自分でビルドして確認するしかなさそうです。

一方,こちらが伝えるのは JSFの参照実装Mojarraの立場のようです。
とっくの昔に解決しFixも発行されています( Resolved: 24/Aug/11 09:29 PM)。
しかしつい最近のアップデートがあります( Updated: 10/Feb/12 02:24 PM)。
何かと思ってながめていたら,Fix Versionは2.2とする,これがアップデートの内容みたい。
また次をIssue Descriptionとして掲載しています。

| The following message is shown for the following code:
|
| <h:form>
| <ui:fragment>
| <h:panelGroup>
| <h:commandLink value="Test" />
| </h:panelGroup>
| </ui:fragment>
| </h:form>

| Removal of ui:fragment fixes the problem. This is because parent
hierarchy is not set completely when Mojarra checks for the form
presence.

| Mojarra 2.1.0-b10

自分自身もこの同じ問題を体験していたのだと納得するのは私には無理です。
どなたか解説していただけると勉強になりますが。

--
久保

Hiroshi Kubo

unread,
Feb 28, 2012, 10:51:29 PM2/28/12
to glas...@googlegroups.com
久保です。

From: Hiroshi Kubo <kubo....@gmail.com>
Date: Mon, 27 Feb 2012 22:37:03 +0900

> もう少し調査を続けてみます。

調査が成果をおさめたというべきか判断できませんが,体験報告をします。

以下が体験報告です。

試しにmaven projectに変えてみたら,web.xmlの設定がDevelopmentのまま
でもワーニングがでなくなりました。

pom.xmlにはつぎをいれてあります。

   <dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>

<repositories>
<repository>
<url>http://repository.primefaces.org/</url>
<id>primefaces</id>
<layout>default</layout>
<name>Repository for library Library[primefaces]</name>
</repository>
</repositories>

primefacesのバージョンは最新の3.1.1を選んでいますが,これをNetBeansの
Project Propertyに合わせて 2.2.1としてもワーニングはでません。

maven利用もまた,問題の回避策なんでしょうか。すっきりしませんね。

---久保


Satoshi Kubo

unread,
Feb 29, 2012, 6:46:11 AM2/29/12
to glas...@googlegroups.com
こんにちは。
久保です。

無事動かれたのでしょうか。
おめでとうございます。

結局古いバージョンのモジュールを使っていてバグを踏んでただけな感じでしょうかねー。

2012年2月29日12:51 Hiroshi Kubo <kubo....@gmail.com>:

--
Satoshi Kubo
mailto:mega...@gmail.com

Reply all
Reply to author
Forward
0 new messages