1

JSP ページで、いくつかの要素を含む を作成しました<h:form enctype="multipart/form-data">: 、<t:inputText>など<t:inputDate>。.<t:message for="someElement"><t:inputFileUpload>


フォームを a の中に入れようとすると<t:panelTabbedPane serverSideTabSwitch="false">(もちろん、 a の中に入れようとすると<t:panelTab>) 頭痛の種になります。

タグを使用して新しい jsp ページ内に panelTab タグを配置することにより (ディレクティブを使用して) 、 Tomahawk の例から TabbedPane の例のソース コードに示されている構造をコピーしました。<f:subview><jsp:include page="somePage.jsp">

まず<t:inputFileUpload>、Managed Bean UploadedFile 属性で割り当てられた値でファイルをロードできません。#{myBean.upFile}

次に、手がかりをグーグル<t:panelTabbedPane>で検索すると、「オートフォーム」と呼ばれるフォームが生成されることがわかったので、ネストされたフォームを取得していました。<h:form>わかりました、私はアウトとエウレカの作成を修正しました<t:panelTabbedPane>! ファイル入力が再び機能しました!(オートフォームは生成されません)

でも、びっくり!ひどいマーフィーの法則!私のすべて<h:message>が失敗し始めます。Eclipseコンソールの出力は、すべて<t:message>が存在しない要素IDを探していることを示しています(IDの一部は探しているものと同じですが、IDの最後で名前が変更されます)

この時点で<t:mesagges>、パネルの先頭にすべての検証エラーを一度に表示するタグ (末尾の「s」に注意してください) を配置すると、正常に動作します。そのため、検証エラーが存在し、パネルの最初に正しく表示されます。

このページで生成されるすべての検証エラー メッセージは、JSF 組み込みの検証メッセージです。この時点で、バッキング Bean にはバリデーターが定義されていません。

¿私はどのように<t:message for="xyz">適切に動作させることができますか?


アプリケーション サーバーとして Geronimo を使用する Eclipse Ganymede プロジェクトで、Tomahawk-1.1.6 と myFaces-impl-1.2.3 を使用しています (Geronimo は myFaces jar 実装を提供し、tomahawk jar を Web-INF/lib フォルダーに配置します)応用)


「解決済み」: この問題は、myFaces フォーラムに報告された問題です。

すぐに応答と情報を提供してくれた Kyle Renfro に感謝します。(よくやったカイル!) 問題を見る


編集1

1.- すぐに返信してくれた Kyle Renfro に感謝します。入力要素内で使用される forceID 属性は、最初は機能しませんが、いくつかの非常にトリッキーな調整を行うことで、<t:message for="xyz">タグを機能させることができました。

私がしたことは次のとおり
です。 1.タグを付けてもうまくいきません。 2. 次に、Eclipse コンソールでエラー メッセージを確認した後、「id」属性の名前を次のように変更しました。 <inputText id=" namej_id_1 " forceId ="true" required="true"> しかし、フォームの「送信」ボタンを2回押した後。2回目!(JSF ライフサイクルで何かが起こっていると思われます) 4. これは、ユーザーが送信ボタンを 2 回押して、ページにエラー メッセージを表示する必要があることを意味します。 5. ID の末尾に「j_id_1」という語句を使用するのは非常に奇妙です。 <inputText id="name" forceId="true" required="true"><t:message>

<t:message>


編集2

わかりました、ここにコードがあります。迷惑にならないように願っています。

1.- mainPage.jsp (ここに<t:panelTabbedPane>and<f:subview>タグがあります)

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>  
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>  
<%@ taglib prefix="t" uri="http://myfaces.apache.org/tomahawk"%>  
<html>  
<body>  
<f:view>  
<h:form enctype="multipart/form-data">  
<t:panelTabbedPane serverSideTabSwitch="false" >  

            <f:subview id="subview_tab_detail">  
                <jsp:include page="detail.jsp"/>  
            </f:subview>  

        </t:panelTabbedPane>  
    </h:form>  

</f:view>  
</body>  
</html>  


2.- detail.jsp (<t:panelTab>タグはこちら)

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>  
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>  
<%@ taglib prefix="t" uri="http://myfaces.apache.org/tomahawk"%>  

<t:panelTab label="TAB_1">  
        <t:panelGrid columns="3">  
            <f:facet name="header">  
                <h:outputText value="CREATING A TICKET" />  
            </f:facet>  

            <t:outputLabel for="ticket_id" value="TICKET ID" />  
            <t:inputText id="ticket_id" value="#{myBean.ticketId}" required="true" />  
            <t:message for="ticket_id" />  

            <t:outputLabel for="description" value="DESCRIPTION" />  
            <t:inputText id="description" value="#{myBean.ticketDescription}" required="true" />
            <t:message for="description" />  

            <t:outputLabel for="attachment" value="ATTACHMENTS" />  
            <t:panelGroup>  
                <!-- This is for listing multiple file uploads -->  
                <!-- The panelGrid binding make attachment list grow as the user inputs several files (one at a time) -->  
                <t:panelGrid columns="3" binding="#{myBean.panelUpload}" />  
                <t:inputFileUpload id="attachment"  value="#{myBean.upFile}" storage="file" />  
                <t:commandButton value="ADD FILE" action="#{myBean.upload}" />  
            </t:panelGroup>  
            <t:message for="attachment" />  

            <t:commandButton action="#{myBean.create}" value="CREATE TICKET" />  
        </t:panelGrid>  
</t:panelTab>  

編集3

カイル・レンフロのフォローアップへの返答:

カイル 言います:

「ページの最初のビューで、inputTexts に何も入力せず、ファイルをアップロードせずに [チケットを作成] ボタンを押した場合、メッセージ タグは inputTexts に対して機能しますか? (つまり、required = true)」 inputTexts のメッセージは機能しているが、inputFileUpload のメッセージは機能していないかどうかに興味があります。」

1.-
検証エラー メッセージがまったく表示されない (メッセージ タグが機能しない) 検証エラー メッセージを 1 つだけテストしようとしても (たとえば、最初の入力テキストのメッセージをテストする) ) どれも表示されません。
2.- Eclipse コンソールに次の内部エラーが表示されます。

ERROR [HtmlMessageRendererBase] Could not render Message. Unable to find component 'ticket_id' (calling findComponent on component 'j_id_jsp_1383779881_1:subview_tab_detail:j_id_jsp_1716158401_0j_id_1:j_id_jsp_1716158401_5j_id_1'). If the provided id was correct, wrap the message and its component into an h:panelGroup or h:panelGrid.  
ERROR [HtmlMessageRendererBase] Could not render Message. Unable to find component 'description' (calling findComponent on component 'j_id_jsp_1383779881_1:subview_tab_detail:j_id_jsp_1716158401_0j_id_1:j_id_jsp_1716158401_8j_id_1'). If the provided id was correct, wrap the message and its component into an h:panelGroup or h:panelGrid.  
ERROR [HtmlMessageRendererBase] Could not render Message. Unable to find component 'attachment' (calling findComponent on component 'j_id_jsp_1383779881_1:subview_tab_detail:j_id_jsp_1716158401_0j_id_1:j_id_jsp_1716158401_14j_id_1'). If the provided id was correct, wrap the message and its component into an h:panelGroup or h:panelGrid.  

"j_id_1"たとえば、ID「ticket_id」の場合、生成されたIDで単語 を見たときは次のとおりです。

j_id_jsp_1383779881_1:subview_tab_detail:j_id_jsp_1716158401_0j_id_1:j_id_jsp_1716158401_5j_id_1

そして、生成された HTML 生成ページを表示すると、ID 名が次のようになっていることがわかりました ("ForceId" 属性は使用していません)。

<input id="j_id_jsp_1383779881_1:subview_tab_detail:j_id_jsp_1716158401_0j_id_1:ticket_idj_id_1" name="j_id_jsp_1383779881_1:subview_tab_detail:j_id_jsp_1716158401_0j_id_1:ticket_idj_id_1">  

4

2 に答える 2

1

tomahawk コンポーネントのforceId属性は、この問題を解決するはずです。

何かのようなもの:

&lt;t:outputText id="xyz" forceId="true" value="#{mybean.stuff}"/&gt;

ページの最初のビューで、inputTexts に何も入力せず、ファイルをアップロードせずに [チケットを作成] ボタンを押した場合、メッセージ タグは inputTexts に対して機能しますか? (つまり、required = true) inputTexts のメッセージが機能しているのに、inputFileUpload のメッセージが機能していないかどうかに興味があります。

于 2008-09-16T13:36:35.533 に答える
0

myfacesのバグに関連している可能性があります。あなたが試すかもしれないmyfacesとtomahawkの新しいバージョンがあります。簡単なテストとしてサブビュー機能を削除します。detail.jspページをメインページにコピーして戻します。

https://issues.apache.org/jira/browse/MYFACES-1807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12567158#action_12567158

于 2008-09-22T14:33:34.340 に答える