0

p:accordionpanelのタブ内にフォームがあるので、各タブには独自のフォームとコマンドボタンがあります。コマンドボタンは正常に機能しますが、p:messagesは表示されません。検証が失敗した場合、データはデータベースに保存されません。メッセージが表示されません。

バッキングBeanはセッションスコープです。

テンプレートにはフォームがないため、別のフォームにネストされたフォームはありません。BalusCがコマンドボタンが失敗するかどうかを尋ねる11の質問で提案されているように、コマンドボタンにf:ajax render = "messages"を追加しようとしましたが、コマンドボタンが機能しなくなりました。

ご協力いただきありがとうございます!

 <ui:define name="content">
    <p:accordionPanel value="#{activityAdminController.activities}" var="a" activeIndex="#{activityAdminController.activeTab}"> 
        <p:ajax event="tabChange" listener="#{activityAdminController.onTabChange}" />
        <p:tab title="#{a.description}">  
            <h:form id="activityForm">
                <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
                <p:panelGrid styleClass="activityGrid">  
                    <p:row>                            
                        <p:column><h:outputLabel for="activity" value="Activity: " /></p:column>
                        <p:column>
                            <p:inputText id="activity" value="#{a.description}" required="true" requiredMessage="Activity name must be entered" />
                        </p:column>

                        <p:column>
                            <h:outputLabel for="duration" value="Duration: " />
                        </p:column>
                        <p:column>
                            <p:inputText id="duration" value="#{a.duration}" >  
                                <f:validateLongRange minimum="1" />
                            </p:inputText>
                        </p:column> 
                    </p:row>

                    <p:row> 
                        <p:column><h:outputLabel for="active" value="Active: " /></p:column>
                        <p:column><p:selectBooleanCheckbox id="active" value="#{a.isActive}" /></p:column>
                    </p:row>                                                

                    <p:row> 
                        <p:column><h:outputLabel value="Monday from: " />  </p:column>
                        <p:column> <p:calendar value="#{a.day2FromTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>  
                        <p:column><h:outputLabel value="to: " /> </p:column>
                        <p:column><p:calendar value="#{a.day2ToTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>
                    </p:row>

                    <p:row> 
                        <p:column> <h:outputLabel value="Tuesday from: " />  </p:column>
                        <p:column> <p:calendar value="#{a.day3FromTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" />   </p:column>
                        <p:column><h:outputLabel value="to: " /> </p:column>
                        <p:column><p:calendar value="#{a.day3ToTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>
                    </p:row>

                    <p:row> 
                        <p:column><h:outputLabel value="Wednesday from: " />  </p:column>
                        <p:column><p:calendar value="#{a.day4FromTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>  
                        <p:column><h:outputLabel value="to: " /> </p:column>
                        <p:column><p:calendar value="#{a.day4ToTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>
                    </p:row>

                    <p:row> 
                        <p:column><h:outputLabel value="Thursday from: " /> </p:column> 
                        <p:column> <p:calendar value="#{a.day5FromTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" />   </p:column>
                        <p:column> <h:outputLabel value="to: " /> </p:column>
                        <p:column><p:calendar value="#{a.day5ToTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>
                    </p:row>

                    <p:row> 
                        <p:column><h:outputLabel value="Friday from: " />  </p:column>
                        <p:column> <p:calendar value="#{a.day6FromTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" />  </p:column> 
                        <p:column><h:outputLabel value="to: " /> </p:column>
                        <p:column><p:calendar value="#{a.day6ToTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>
                    </p:row>

                    <p:row> 
                        <p:column><h:outputLabel value="Saturday from: " />  </p:column>
                        <p:column> <p:calendar value="#{a.day7FromTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>  
                        <p:column><h:outputLabel value="to: " /> </p:column>
                        <p:column><p:calendar value="#{a.day7ToTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /></p:column> 
                    </p:row>

                    <p:row> 
                        <p:column><h:outputLabel value="Sunday from: " />  </p:column>
                        <p:column><p:calendar value="#{a.day1FromTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" />   </p:column>
                        <p:column><h:outputLabel value="to: " /> </p:column>
                        <p:column><p:calendar value="#{a.day1ToTime}" pattern="HH:mm" timeOnly="true" minHour="8" maxHour="22" stepMinute="30" /> </p:column>
                    </p:row>
                </p:panelGrid>  

                <p:commandButton value="Save" action="#{activityAdminController.submit()}" icon="ui-icon-check" process="@form" />
            </h:form>
        </p:tab>  
    </p:accordionPanel>
</ui:define>

4

1 に答える 1

0

update="@parent" を p:commandButton に追加すると、問題が解決しました。

update 属性に関するヒントを提供してくれた BalusC に感謝します。

私はPrimeFaces 3.4.2を使用しています

于 2013-01-11T16:33:58.560 に答える