Запретить отправку формы на вкладке с помощью richfaces tabPanel - PullRequest
0 голосов
/ 05 сентября 2011

Получил панель вкладок что-то вроде:

<rich:tabPanel  >
    <rich:tab header="Description"  >
        <ui:include src="./tests/description.xhtml"/>                   
    </rich:tab>
    <rich:tab header="Something else">
        something else
    </rich:tab>
</rich:tabPanel>      

С несколькими полями в description.xhtml:

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:advanced="http://java.sun.com/jsf/composite/advanced">    

    <h:panelGroup id="description">        
        // ...
        <h:outputLabel  value="Name"/> 
        <h:inputText    id="name"
                        value="#{testTree.selected.name.text}" 
                        rendered="#{description.editing}"/>      
        // ...
        <advanced:button text="Reset" //Just a little upgraded a4j:commandButton
                         icon="images/clear.png"
                         action="#{description.resetEditing()}"
                         execute="@this"                                
                         render="description"
                         rendered="#{description.editing}"/>               
        <advanced:button text="Save"
                         icon="images/save2.png"
                         action="#{description.commitEditing()}"
                         execute="description" // #name and a few more fields                  
                         render="description"
                         rendered="#{description.editing}"/> 
    </h:panelGroup>
</ui:composition>

Переключение на вторую вкладку Я получил мою форму "описание" отправленои это не хорошо.Я хочу сбросить все поля вместо этого.

Как мне добиться этого с RichFaces 4?

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

По умолчанию при переключении между вкладками отправляется родительская tabPanel. Вы можете изменить это поведение, используя атрибут switchType tabPanel для ajax или client. Я могу придумать два способа предотвратить отправку вашей формы при переходе с одной вкладки на другую:

  1. Изменить атрибут switchType на клиент

  2. Включите форму для каждой вкладки

Я не вижу, где определена ваша форма, но я предполагаю, что все богатство: tabPanel находится внутри формы. Я вижу, что на вашей странице description.xhtml не определено ни одной формы. Вы можете попробовать удалить имеющуюся форму, а затем добавить форму для каждой вкладки, то есть в description.xhtml:

<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:advanced="http://java.sun.com/jsf/composite/advanced">    

<a4j:form>
<h:panelGroup id="description">        
    // ...
    <h:outputLabel  value="Name"/> 
    <h:inputText    id="name"
                    value="#{testTree.selected.name.text}" 
                    rendered="#{description.editing}"/>      
    // ...
    <advanced:button text="Reset" //Just a little upgraded a4j:commandButton
                     icon="images/clear.png"
                     action="#{description.resetEditing()}"
                     execute="@this"                                
                     render="description"
                     rendered="#{description.editing}"/>               
    <advanced:button text="Save"
                     icon="images/save2.png"
                     action="#{description.commitEditing()}"
                     execute="description" // #name and a few more fields                  
                     render="description"
                     rendered="#{description.editing}"/> 
</h:panelGroup>
</a4j:form>
</ui:composition>

Я бы также установил атрибут switchType tabPanel в ajax, чтобы обновлялось только содержимое tabPanel.

0 голосов
/ 21 октября 2014

1) Измените атрибут switchType на клиентский
2) Включите форму для каждой вкладки

Я потратил 6 часов на поиск в Google, наконец-то закончив поиски другого,
Изменение значения этого атрибута сохраненомой день.

...