zk der Auswahl von combobox-Element programmgesteuert
Kann ich nicht setzen Sie den Wert Kombinationsfeld programmgesteuert kann jemand mir sagen, was fehlt in dem code
public class Profile extends Window implements AfterCompose {
@Override
public void afterCompose() {
Session session = Sessions.getCurrent(false);
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(
(ServletContext) getDesktop().getWebApp().getNativeContext());
UsersDao usersDao = (UsersDao) ctx.getBean("daoUsers");
User user = (User) session.getAttribute("user");
user = usersDao.getUser(user.getUsername(),user.getPassword());
Textbox username_t = (Textbox) this.getFellow("username");
Textbox password_t = (Textbox) this.getFellow("password");
Textbox conpassword_t = (Textbox) this.getFellow("con_password");
Textbox firstname_t = (Textbox) this.getFellow("firstName");
Textbox lastname_t = (Textbox) this.getFellow("lastName");
Textbox email_t = (Textbox) this.getFellow("email");
Combobox hintQuestion_t = (Combobox) this.getFellow("hintQuestion");
Textbox hintAnswer_t = (Textbox) this.getFellow("hintAnswer");
Combobox locale_t = (Combobox) this.getFellow("locale");
Combobox authority_t = (Combobox) this.getFellow("authority");
username_t.setText(user.getUsername());
firstname_t.setText(user.getUserDetails().getFirstName());
lastname_t.setText(user.getUserDetails().getLastName());
email_t.setText(user.getUserDetails().getEmail());
Comboitem selectedItem = getSelectedIndexComboboxItem(hintQuestion_t, user.getHintQuestion());
hintQuestion_t.setSelectedItem(selectedItem);
hintAnswer_t.setText(user.getHintAnswer());
selectedItem = getSelectedIndexComboboxItem(locale_t, user.getUserDetails().getLocale());
locale_t.setSelectedItem(selectedItem);
selectedItem = getSelectedIndexComboboxItem(authority_t, ((Authority)user.getAuthorities().toArray()[0]).getRole());
authority_t.setSelectedItem(selectedItem);
}
private Comboitem getSelectedIndexComboboxItem(Combobox combobox, String value) {
List<Comboitem> items = combobox.getItems();
Comboitem item = items.get(0);
for (int i = 0; i < items.size(); i++) {
Comboitem comboitem = items.get(i);
String label = (String)comboitem.getLabel();
String cval = (String)comboitem.getValue();
if ((label!=null && label.equalsIgnoreCase(value)) || (cval != null && cval.equalsIgnoreCase(value))) {
item = comboitem;
break;
}
}
return item;
}
}
//zk-Datei
<window id="profile" use="com.jf.web.zk.ui.Profile">
<tabbox id="tabbox" width="40%" >
<tabs>
<tab label="Account Information"/>
<tab label="Personal Information"/>
<tab label="Contact Details"/>
</tabs>
<tabpanels>
<tabpanel>
<grid>
<rows>
<row>
<label value="${i18nUtils.message('user.username')}"/>
<hbox>
<textbox id="username" />*,a-zA-Z,0-9
</hbox>
</row>
<row>
<label value="${i18nUtils.message('user.password')}"/>
<hbox>
<textbox id="password" type="password"/>*
</hbox>
</row>
<row>
<label value="${i18nUtils.message('registration.user.password.confirm')}"/>
<hbox>
<textbox id="con_password" type="password"/>*
</hbox>
</row>
<row>
<label value="${i18nUtils.message('user.details.first.name')}"/>
<hbox>
<textbox id="firstName" type="text"/>*
</hbox>
</row>
<row>
<label value="${i18nUtils.message('user.details.last.name')}"/>
<hbox>
<textbox id="lastName" type="text"/>*
</hbox>
</row>
<row>
<label value="${i18nUtils.message('user.details.email')}"/>
<hbox>
<textbox id="email" type="text"/>*
</hbox>
</row>
<row>
<label value="${i18nUtils.message('user.hint.question')}"/>
<hbox>
<combobox id="hintQuestion" onCreate='self.setSelectedIndex(1);'>
<comboitem label="${i18nUtils.message('user.hint.question.possible.value1')}" />
<comboitem label="${i18nUtils.message('user.hint.question.possible.value2')}" />
<comboitem label="${i18nUtils.message('user.hint.question.possible.value3')}" />
<comboitem label="${i18nUtils.message('user.hint.question.possible.value4')}" />
<comboitem label="${i18nUtils.message('user.hint.question.possible.value5')}" />
</combobox>*
</hbox>
</row>
<row>
<label value="${i18nUtils.message('user.hint.answer')}"/>
<hbox>
<textbox id="hintAnswer" type="text"/>*
</hbox>
</row>
<row>
<label value="${i18nUtils.message('user.details.locale')}"/>
<hbox>
<combobox id="locale" onCreate='self.setSelectedIndex(1);self.setReadonly(true);'>
<comboitem label="${i18nUtils.message('user.details.locale.en')}" value="en_US"/>
<comboitem label="${i18nUtils.message('user.details.locale.bg')}" value="bg_BG"/>
</combobox>*
</hbox>
</row>
<row>
<label value="${i18nUtils.message('authority.account.type')}"/>
<hbox>
<combobox id="authority" onCreate='self.setSelectedIndex(0);self.setReadonly(true);'>
<comboitem label="${i18nUtils.message('authority.job.seeker')}" value="Job Seeker"/>
<comboitem label="${i18nUtils.message('authority.employer')}" value="Employer"/>
<comboitem label="${i18nUtils.message('authority.hra')}" value="Human Resource Agency"/>
<comboitem label="${i18nUtils.message('authority.advertiser')}" value="Advertiser"/>
</combobox>*
</hbox>
</row>
</rows>
</grid>
</tabpanel>
</tabpanels>
</tabbox>
<grid width="40%">
<rows>
<row>
<button label="${i18nUtils.message('bttn.save')}" onClick="save()"/>
<button label="${i18nUtils.message('bttn.cancel')}" onClick="cancel()"/>
</row>
</rows>
</grid>
</window>
</zk>
"GetSelectedIndexComboboxItem()" zurückgegeben wird der richtig ausgewählte Element, aber es scheint keine Auswirkung auf die UI. Wie zum Beispiel wird das Gebietsschema auf default eingestellt ist die Bulgarische Sprache, die ich brauche, um es auf Englisch.
InformationsquelleAutor Abdul Khaliq | 2010-03-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es ist ein Fehler in Ihrer version von ZK. Sie könnten versuchen, mit setSelectedItemApi oder setSelectedItemIndex statt setSelectedItem.
Auf der anderen Seite, auch wenn es funktioniert, deine Lösung ist nicht richtig. Comboboxes ermöglichen die Eingabe von unterschiedlichen Werten als das, was in der vordefinierten Liste. Die einzige wirkliche Ergebnis einer combobox ist die Beschriftung. Ich denke, dass eine separate 'Wert' eines Comboitem ist keine gute Idee.
SetText() auf die Combobox, oder wenn Sie wollen, beschränken Sie die Möglichkeiten, um eine vordefinierte Liste, Listbox verwenden.
InformationsquelleAutor Miklos Csuka
Nur einen Blick auf deinen code kann ich sehen, ein paar Sachen falsch, zusätzlich zu dem, was Miklos wies darauf hin.
Sind Sie mit getfellow aus einer Java-basierten Komponisten. Allerdings sollte man dies nicht als ZK wird autowire-Komponenten für Sie. Sie müssen die Verwendung des MVC-pattern und erweitern GenericForwardComposer. Hier ist ein Beispiel:
ZUL-Datei
Java-Datei
Weitere Informationen konsultieren Sie bitte die Dokumentation
Mit der Funktion zum abrufen des ausgewählten Elements, warum nicht einfach die Combobox ist getSelectedItem? Auch wenn Sie mit einem Listbox-wie Miklos schlug dann können Sie auch die gleiche Funktion.
Hinblick auf die Einstellung des ausgewählten Elements, die Sie brauchen, um zu aktualisieren Sie Ihre ZK-version auf die neueste. Ich habe kein problem damit.
InformationsquelleAutor Tim