Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF+CDI / 6 сообщений из 6, страница 1 из 1
27.05.2016, 10:20
    #39244604
ditban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF+CDI
Доброго дня всем!
Вопрос: с jsf обращаюсь к Сdi-бину.
Почему-то метод jmController.findUserAccountByNameEvent отрабатывает только один раз.
При чем, когда убираю обновление компонента update="fromUserIdItems" , то все нормально, метод отрабатывает каждый раз.
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<p:dialog widgetVar="userDeletionDialog" header="111" modal="true" style="width:400px;" showEffect="clip" hideEffect="clip">
                    <h:inputText id="jmControllerFromId" value="#{jmController.fromId}" title="ФИО"/>
                    <p:commandButton id="findUserAccountByNameButton" value="Найти пользователя" actionListener="#{jmController.findUserAccountByNameEvent}" update="fromUserIdItems" />
                    <h:selectOneMenu id="fromUserIdItems" value="#{jmController.fromUserId}" title="список" >
                        <f:selectItems id="fromUsersIds" value="#{jmController.availableUsers}" var="user"
                                       itemLabel="#{user.name}" itemValue="#{user}"/>
                    </h:selectOneMenu>
                
                    <p:commandButton id="refreshButton" value="Обновить" actionListener="#{jmController.refreshFromUserId}" update="jmControllerFromId fromId"/> 
        
               
                </p:dialog>



Код: java
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
@Named("jmController")
@SessionScoped
public class JmController implements Serializable {
 
    private Jm current;
    private DataModel items = null;
    @EJB
    private entity.JmFacade ejbFacade;
    private PaginationHelper pagination;
    private int selectedItemIndex;
    
    private boolean hideEmpty;
 
    public boolean isHideEmpty() {
        return hideEmpty;
    }
 
    public void setHideEmpty(boolean hideEmpty) {
        this.hideEmpty = hideEmpty;
    }
 
 
    @EJB
    transient private JdapHelper JdapHelper;
    
    private List<UserAccount> availableUsers;
    public void setAvailableUsers(List<UserAccount> availableUsers){
        this.availableUsers=availableUsers;
    }
    public List<UserAccount> getAvailableUsers(){
        return this.availableUsers;
    }
 
 
 
    //Метод поиска пользователей по подстроке ФИО
    public void findUserAccountByNameEvent(ActionEvent actionEvent){
        System.out.println("findUserAccountByNameEvent"); 
 
        availableUsers=getUserAccountsByName(fromId);
 
 
      
    }
 
    public List<UserAccount> getUserAccountsByName(String accountName){
        List <UserAccount> userAccounts=new ArrayList<UserAccount>();
        try {
 
            UserAccount userAccount=new UserAccount("name.1"+(new Date().toString()), "mail1");
            UserAccount userAccount2=new UserAccount("name.2"+(new Date().toString()), "mail2");
            userAccounts.add(userAccount);
             userAccounts.add(userAccount2);
           
        } catch (Exception ex) {
           ex.printStackTrace();
   
        }
    return userAccounts;
    }
...
...
Рейтинг: 0 / 0
27.05.2016, 13:07
    #39244828
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF+CDI
вот это выглядит подозрительно
Код: html
1.
itemValue="#{user}"


Ну и сам фрагмент xhtml кода должен находиться внутри формы, тут этого не видно, просто уточняюще-наводящий вопрос
...
Рейтинг: 0 / 0
27.05.2016, 15:07
    #39244965
ditban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF+CDI
ivanra,

он внутри form.
Полностью код:
Код: html
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/template.xhtml">
        <ui:define name="title">
            <h:outputText value="#{bundle.ListJmTitle}"></h:outputText>
        </ui:define>
        <ui:define name="body">
            <h:form styleClass="jsfcrud_list_form">
                <h:panelGroup id="messagePanel" layout="block">
                   
                    <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
                </h:panelGroup>
                <h:panelGrid columns="2">
                    <h:outputText value="Не показывать пустые сообщения"/>
                    <p:selectBooleanCheckbox value="#{jmController.hideEmpty}">
                        <p:ajax update="rowsCount items panelGroupItems" listener="#{jmController.hideEmptyEvent}" />
                    </p:selectBooleanCheckbox>
                    <h:outputText value="От кого"/>
                    <h:inputText id="fromId" value="#{jmController.fromId}" title="От кого" onclick="PF('userDeletionDialog').show();"/>
                   
           
                </h:panelGrid>
                
                
                
                <h:outputText id="emptyItems" escape="false" value="#{bundle.ListJmEmpty}" rendered="#{jmController.items.rowCount == 0}"/>
                <h:panelGroup id="panelGroupItems" rendered="#{jmController.items.rowCount >= 0}">
                    <h:outputText id="rowsCount" value="#{jmController.pagination.pageFirstItem + 1}..#{jmController.pagination.pageLastItem + 1}/#{jmController.pagination.itemsCount}"/>&nbsp;
                    <h:commandLink action="#{jmController.previous}" value="#{bundle.Previous} #{jmController.pagination.pageSize}" rendered="#{jmController.pagination.hasPreviousPage}"/>&nbsp;
                    <h:commandLink action="#{jmController.next}" value="#{bundle.Next} #{jmController.pagination.pageSize}" rendered="#{jmController.pagination.hasNextPage}"/>&nbsp;
                    <h:dataTable id="items" value="#{jmController.items}" var="item" border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_subject}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.subject}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_threadId}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.threadId}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_toJid}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.toJid}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_msgType}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.msgType}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_direction}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.direction}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_fromJid}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.fromJid}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_messageLen}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.messageLen}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_bodyLen}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.bodyLen}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_sentDate}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.sentDate}">
                                <f:convertDateTime pattern="MM/dd/yyyy HH:mm:ss" />
                            </h:outputText>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_historyFlag}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.historyFlag}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_jmPK_bodyString}"/>
                            </f:facet>
                            <h:outputText value="#{item.jmPK.bodyString}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_messageString}"/>
                            </f:facet>
                            <h:outputText value="#{item.messageString}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_bodyText}"/>
                            </f:facet>
                            <h:outputText value="#{item.bodyText}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListJmTitle_messageText}"/>
                            </f:facet>
                            <h:outputText value="#{item.messageText}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="&nbsp;"/>
                            </f:facet>
                            <h:commandLink action="#{jmController.prepareView}" value="#{bundle.ListJmViewLink}"/>
                            <h:outputText value=" "/>
                            <h:commandLink action="#{jmController.prepareEdit}" value="#{bundle.ListJmEditLink}"/>
                            <h:outputText value=" "/>
                            <h:commandLink action="#{jmController.destroy}" value="#{bundle.ListJmDestroyLink}"/>
                        </h:column>
                    </h:dataTable>
                </h:panelGroup>
                

                <h:commandLink action="#{jmController.prepareCreate}" value="#{bundle.ListJmCreateLink}"/>
                

                

                <h:link outcome="/index" value="#{bundle.ListJmIndexLink}"/>
                
                
                <p:dialog widgetVar="userDeletionDialog" header="111" modal="true" style="width:400px;" showEffect="clip" hideEffect="clip">
                    <h:inputText id="jmControllerFromId" value="#{jmController.fromId}" title="ФИО"/>
                    <p:commandButton id="findUserAccountByNameButton" value="Найти пользователя" actionListener="#{jmController.findUserAccountByNameEvent}" update="fromUserIdItems" />-->
                    <h:selectOneMenu id="fromUserIdItems" value="#{jmController.fromUserId}" title="список" >
                        <f:selectItems id="fromUsersIds" value="#{jmController.availableUsers}" var="user"
                                       itemLabel="#{user.name}" itemValue="#{user}"/>
                    </h:selectOneMenu>
                
                    <p:commandButton id="refreshButton" value="Обновить" actionListener="#{jmController.refreshFromUserId}" update="jmControllerFromId fromId"/> 
        
               
                </p:dialog>
                
            </h:form>
        </ui:define>
    </ui:composition>
</html>
...
Рейтинг: 0 / 0
27.05.2016, 15:14
    #39244974
ditban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF+CDI
ivanra, а по поводу вот это выглядит подозрительно itemValue="#{user}"


Код: html
1.
2.
3.
4.
<h:selectOneMenu id="fromUserIdItems" value="#{jmController.fromUserId}" title="список" >
                        <f:selectItems id="fromUsersIds" value="#{jmController.availableUsers}" var="user"
                                       itemLabel="#{user.name}" itemValue="#{user}"/>
                    </h:selectOneMenu>



то есть user это объект из списка jmController.availableUsers.

В jmController:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    private UserAccount user1;
    private List<UserAccount> availableUsers;
    public void setAvailableUsers(List<UserAccount> availableUsers){
        this.availableUsers=availableUsers;
    }
    public List<UserAccount> getAvailableUsers(){
        return this.availableUsers;
    }



Класс UserAccount нужен только для временного хранения строковых данных:
Код: java
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.
@Stateless
public class UserAccount implements Serializable {

    private String name;
    private String mail;

    public UserAccount() {
    }
    
    public UserAccount(String name, String get) {
        this.mail=mail;
        this.name=name;
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }
}
...
Рейтинг: 0 / 0
27.05.2016, 16:20
    #39245095
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF+CDI
решений несколько
1) вместо itemValue="#{user}" написать itemValue="#{user.name}"
2) оставить itemValue="#{user}", но тогда в UserAccount
реализовать интерфейс javax.faces.component.ValueHolder

или написать вменяемый метод toString()

И то не факт, что в конкретной проблеме поможет
...
Рейтинг: 0 / 0
01.06.2016, 10:32
    #39247836
ditban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF+CDI
ivanra, не помогло. тут проблема не с тем, что это отдельный тип User, первый раз же все отрабатывает.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF+CDI / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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