|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
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 она тоже появляется/исчезает) но вот если раскоментить все, то все перестает работать. То есть поля ввода не исчезают и моя текстовая метка никак не меняется. Не могу понять почему.
Объясните плиз
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 ; |
|
да, спасибо, так намного лучше, я что то перемудрил
кто нибудь может сказать что то по теме?может быть расскажете как сами что то подобное делаете? а то у меня работает почему то через раз и я никак не могу понять в чем дело  _________________ Если я понадоблюсь, я буду у холодильника. (с) |
|
|
|
 |
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 |
|
|
ага, ну это в принципе и не критично, мне нужно только чтобы форма появилась/исчезла
с этим вроде разобрался, спасибо
Сейчас как раз разбираюсь с 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 не использую, сложно что то сказать |
|
|
|
 |
|
|
|