powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / jsf: позиционирование в списке.
12 сообщений из 12, страница 1 из 1
jsf: позиционирование в списке.
    #33922736
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я совсем запутался с этими фазами, когда что происходит. Есть 2
выпадающих списка. Пусть для удубства: в 1) - договоры, во 2) - НДС. У
разных договоров - разные НДС. Т.е сменили договор, сделали submit(),
произошел setDogID. Внутри setDogID смотрю НДС и присваиваю нужное значение.
Т.е. для списка 2) есть переменная nds и геттер сеттер. Переменная nds
меняется. А при отображении страницы выбранный NDS остается тем же несмотря
на изменения. Что делать то?
jsf - реализация от MyFaces 1.1.3

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33922956
xm...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код jsf в студию
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33923004
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо 2ому списку сделать
Код: plaintext
value = "#{dogBean.currentDog.nds}" 
имеется в виду что currentDog содержит выбранный договор, и у договора есть поле nds.
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33924753
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробую вкратце написать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
 public   class  Account  extends  ParentBean {
     private   int  dogID; // договор
     private   int  nds;
     private  ArrayList<SelectItem> alDogovor;
     private  ArrayList<SelectItem> alNDS;

     public   int  getDogID() {
         return  dogID;
    }

     public   void  setDogID( int  dogID) {
       dogIDChange =  this .dogID != dogID;
         if  (dogIDChange) {
             this .dogID = dogID;
            // тут много чего в том числе нахожу значение nds
            nds = новое значение nds для выбранного договора сто пудов
        }
    }

     public   int  getRepNDS() {
         return  nds;
    }

     public   void  setRepNDS( int  nds) {
         this .nds = nds;
    }

     public  SelectItem[] getDogovor() {
         return  sessionData.getdbUtils().arrayListToSelectItem(alDogovor);
    }

     public  SelectItem[] getNDS() {
         return  sessionData.getdbUtils().arrayListToSelectItem(alNDS);
    }
}

теперь jsf (опять же вкратце):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    <h:form id="fmAccount">
            <h:panelGrid id="pgAccountHeader" columns="2" style="width:
95%;">
                <h:outputText value="? Договора"/>
                <h:selectOneMenu id="somNDogovor"
value="#{sessionData.account.dogID}"
                    onchange="submit();" styleClass="combobox">
                    <f:selectItems id="siNDogovor"
value="#{sessionData.account.dogovor}"/>
                </h:selectOneMenu>

                <h:outputText value="НДС, %"/>
                <h:selectOneMenu id="somNDS"
value="#{sessionData.account.repNDS}"
                    styleClass="combobox"> <!-- onchange="submit();"  -->
                    <f:selectItems id="siNDS"
value="#{sessionData.account.NDS}"/>
                </h:selectOneMenu>
            </h:panelGrid>
    </h:form">
так вот если менять договор, то ндс потом не позиционируется. Причем public
SelectItem[] getNDS() происходит до public void setDogID и после него, т.е.
что-то с фазами имхо не то.
а кто-нибудь MyFaces 1.1.3 использует, именно 1.1.3 ?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33924803
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема в том, что вы не понимаете как все работает. вы в сеттере присвоили новое значение nds, но в фазе восстонавления фреймворк поменяет ндс на то, что было.
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33924876
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в том то и дело, что запутался, когда что происходит.
В связи с этим вопрос, а как делать _правильно_ ?
Если не затруднит конечно.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33925000
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я ж написал как. сделать nds полем договора и выставлять его как написано выше
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33925034
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, так, наверное и сделаю. Но в принципе с фазами непонятка остается.
Получается в сеттере, не все поменять можно, т.к. потом фреймворк подставит
старое значение. А когда менять можно? Точно не помню, но когда пробовал,
actionListener и valueChangeListener особо к нужному результату не
приводили. Это в принципе возможно?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33925046
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в сетерах точно ничего делать не надо. сетер нужен только для того, чтобы jsf видел поле.

делать можно или в листнерах, или в методах, вызываемых при нажатии на commandLink или commandButton (не знаю, как их обозвать).

можно кстати избежать дальнейшие фазы если вызвать facesContext.renderResponse();
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33925205
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот понаписал везде сообщений и смотрю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    <h:selectOneMenu id="somNDogovor" value="#{sessionData.account.dogID}"
        onchange="submit();"
valueChangeListener="#{sessionData.account.dogIDChange}"
styleClass="combobox">
        <f:selectItems id="siNDogovor"
value="#{sessionData.account.dogovor}"/>
    </h:selectOneMenu>

Код: plaintext
1.
2.
3.
4.
5.
 17 : 08 : 2006   15 : 23 : 54 : 062  INFO  getNDS [Account.getNDS(Account.java: 677 )]
 17 : 08 : 2006   15 : 23 : 54 : 078  INFO  dogIDChange
[Account.dogIDChange(Account.java: 704 )]
 17 : 08 : 2006   15 : 23 : 54 : 078  INFO  setDogID [Account.setDogID(Account.java: 239 )]
 17 : 08 : 2006   15 : 23 : 54 : 094  INFO  getNDS [Account.getNDS(Account.java: 677 )]

Т.е. в выпадающем списке поменяли договор, что происходит:
сначала читается getNDS, затем собственно изменение, затем сеттер для
договора, затем снова читается getNDS.
Получается что
Deady
делать можно или в листнерах, или в методах, вызываемых при нажатии на
commandLink или commandButton (не знаю, как их обозвать).

присваивать можно в них и только в них? т.е присваивать после изменения в
выпадающем списке бред? Что класть фиктивную кнопку и в ней делать что надо?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33925218
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в принципе да.
или в листнере сделать renderResponse()
...
Рейтинг: 0 / 0
jsf: позиционирование в списке.
    #33927195
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно эту кнопку сделать невидимой?
Как вообще поступают в таких случаях?

P.S. Чего-то как-то не нравится мне такой подход.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / jsf: позиционирование в списке.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]