Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

PrimeFaces + rendered
Список форумов
 ->  Основы веб-программирования на Java


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
student13 : 171
Новичок

СообщениеФев 03, 2012 1:35 
Ответить с цитатой
Всем привет!
Разбираюсь с PrimeFaces, возникла трудность.
Хочу: по нажатию кнопки чтобы появлялись/исчезали поля для ввода
то что сделал:
Код:

    <h:form id="controlForm">
        <p:commandButton id="btnAdd" action="#{viewController.changeAddFormRender()}" update="controlForm"
                         value="Add" title="adding new task to database"/>
        <h:outputText id="text" value="#{viewController.addFormRendered}"/>
       
        <p:panel header="adding params" style="width: 500px" rendered="#{viewController.addFormRendered}">
            <h:panelGrid columns="2">
                <h:outputLabel for="authorInp" value="Author: "/>
                <p:inputText id="authorInp" value="#{taskManager.task.author}" required="true" />
                <h:outputLabel for="task_descriptionInp" value="Task description: "/>
                <p:inputText id="task_descriptionInp" value="#{taskManager.task.task_description}" required="true" />
            </h:panelGrid>
        </p:panel>
    </h:form>


и

Код:

@ManagedBean
@SessionScoped
public class ViewController {

    private boolean addFormRendered = false;
   
    public void changeAddFormRender(){
        addFormRendered = addFormRendered == true ? false : true;
    }
   
    public boolean isAddFormRendered() {
        return addFormRendered;
    }

    public void setAddFormRendered(boolean addFormRendered) {
        this.addFormRendered = addFormRendered;
    }

   
    /** Creates a new instance of ViewController */
    public ViewController() {
    }
}


outputText это я для проверки воткнул...
в общем если закоментить всю panel то все работает, т.е. я вижу что outputText меняется true/false (кстати если какую нть кнопку добавить с тем же параметром rendered она тоже появляется/исчезает) но вот если раскоментить все, то все перестает работать. То есть поля ввода не исчезают и моя текстовая метка никак не меняется. Не могу понять почему.
Объясните плиз Smile
ps если то что я хочу сделать обычно делается по другому, буду рад узнать.это то до чего я сам додумался.
_________________
Если я понадоблюсь, я буду у холодильника. (с)
К началу Посмотреть профиль Отправить личное сообщение
student13 : 171
Новичок

СообщениеФев 03, 2012 22:43 
Ответить с цитатой
Это магия какая то. Стоило мне сёдня загрузить комп и добавить одну кнопку, добавляющую введенные данные в БД как тут же все заработало. Т.е. при нажатии на кнопку скрывается/появляются поля ввода.
_________________
Если я понадоблюсь, я буду у холодильника. (с)
К началу Посмотреть профиль Отправить личное сообщение
demon_zx : 1568
Завсегдатай
Откуда: Moscow

СообщениеФев 04, 2012 9:45 
Ответить с цитатой
небольшой хинт на

Код:
addFormRendered = addFormRendered == true ? false : true;


вот так будет и короче и приятней выглядеть

Код:
addFormRendered = !addFormRendered ;
К началу Посмотреть профиль Отправить личное сообщение
student13 : 171
Новичок

СообщениеФев 04, 2012 17:38 
Ответить с цитатой
demon_zx писал(а):
небольшой хинт на

Код:
addFormRendered = addFormRendered == true ? false : true;


вот так будет и короче и приятней выглядеть

Код:
addFormRendered = !addFormRendered ;


да, спасибо, так намного лучше, я что то перемудрил Smile
кто нибудь может сказать что то по теме?может быть расскажете как сами что то подобное делаете? а то у меня работает почему то через раз и я никак не могу понять в чем дело Sad
_________________
Если я понадоблюсь, я буду у холодильника. (с)
К началу Посмотреть профиль Отправить личное сообщение
demon_zx : 1568
Завсегдатай
Откуда: Moscow

СообщениеФев 04, 2012 17:50 
Ответить с цитатой
у вас на полях стоит required="true" походу валидация не проходит, поэтому добавьте immediate="true" на кнопку
К началу Посмотреть профиль Отправить личное сообщение
student13 : 171
Новичок

СообщениеФев 04, 2012 18:29 
Ответить с цитатой
demon_zx писал(а):
у вас на полях стоит required="true" походу валидация не проходит, поэтому добавьте immediate="true" на кнопку

почитал про immediate. можете поправить если я что то не так понял?
при immediate="true" действия связанные с компонентом(в мое случае с кнопкой) будут совершаться до валидации, если immediate="false" то после. Поэтому пока форма не прошла валидацию действия повешенные на мою кнопку не совершались?
_________________
Если я понадоблюсь, я буду у холодильника. (с)
К началу Посмотреть профиль Отправить личное сообщение
demon_zx : 1568
Завсегдатай
Откуда: Moscow

СообщениеФев 04, 2012 21:00 
Ответить с цитатой
фаза валидации вообще будет пропускаться, но и введенные данные не будут передаваться, кстати если вы делаете валидацию, то нужно добавить еще на форму h:messages или аналог, что бы пользователь понимал в чем он не прав
К началу Посмотреть профиль Отправить личное сообщение
student13 : 171
Новичок

СообщениеФев 04, 2012 21:37 
Ответить с цитатой
ага, ну это в принципе и не критично, мне нужно только чтобы форма появилась/исчезла
с этим вроде разобрался, спасибо Smile

Сейчас как раз разбираюсь с messages и возникла струдность
смотрю пример отсюда, делаю аналогично(хочу выводить инфу, что при нажатии на кнопку изменения в БД сохранились). но...
Код:

        <p:commandButton id="btnSaveChanges" value="Save changes" action="#{viewController.setEditable(false)}" update="controlFrorm"
                         rendered="#{viewController.editable}" actionListener="#{viewController.addInfo}"/>
        <p:messages showDetail="true"/>

тут нетбинс подчеркивает желтым addInfo что нет такого метода(хотя я делаю как в примере по ссылке)
Код:

    public void addInfo(ActionEvent actionEvent){
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Changes have been saved", "blabla"));
    }


если указывать actionListener="#{viewController.addInfo(null)}" то ничего не подчеркивается, но и при нажатии на кнопку ничего не происходит. Где я что не так делаю?
_________________
Если я понадоблюсь, я буду у холодильника. (с)
К началу Посмотреть профиль Отправить личное сообщение
demon_zx : 1568
Завсегдатай
Откуда: Moscow

СообщениеФев 04, 2012 21:50 
Ответить с цитатой
netbeans не использую, сложно что то сказать
К началу Посмотреть профиль Отправить личное сообщение
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Основы веб-программирования на Java


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru