2012-09-28 7 views
4

В моем приложении я пытаюсь установить/обновить SelectOneMenu, если установлен другой параметр SelectOneMenu. Мы используем простые шрифты, поэтому я проверил визуализацию в виде штрихов и нашел именно то, что искал. К сожалению, он не работает. Событие не уволено, и я не знаю, почему. Надеюсь, что вы можете мне помочьUpdate SelectOneMenu, если установлено значение ohter SelectOneMenu (событие не запущено)

Link to the Example of the primefaces showcase

-> Если язык установлен, он должен автоматически загрузит список с приветствием, но это не так. Я должен нажать F5 для перезагрузки. Есть идеи?

Мой код XHTML

<h:form id="addressBasicsForm"> 
    <p:growl id="growl" sticky="true" showDetail="true"/> 
    <p:tabView id="tabView"> 
    <p:tab id="stammdaten" title="#{msg.adr_basics_tabtitle}"> 
    <table style="width:100%;"> 
     <tr> 
      <td style="width: 50%;"> 
    <p:panel toggleable="false"> 
     <table style="margin-top:3px; width:100%;"> 
     <tr style="height:26px;"> 
      <td> 
      <p:selectOneMenu id="somLang" value="#AddressBasics_m.languageId}" style="margin-left:2px; width:90%;"> 
       <f:selectItems value="#{AddressBasics_m.languageItems}"/> 
         <p:ajax update="somAnrede" listener="#{AdressBasics_m.handleLanguageChange}"/> 
      </p:selectOneMenu> 
      </td> 
     </tr> 
     <tr style="height:26px;"> 
      <td> 
      <p:selectOneMenu id="somAnrede" value="#AddressBasics_m.salutationId}" style="margin-left:2px; width:90%;"> 
       <f:selectItems value="#{AddressBasics_m.salutationItems}" /> 
      </p:selectOneMenu> 
      </td> 

Мои Bean

@Named("AddressBasics_m") 
@ConversationScoped 
public class AddressBasicsView implements Serializable{ 
private static final long serialVersionUID = -4034697810438325785L; 

public List<SelectItem> getSalutationItems(){ 
    if(firstrun) 
     languageId = 21L; 

    firstrun = false; 
    if(salutationItems == null || lastLanguageId != languageId){ 
     salutationItems = addressService.getAllSalutationsByLangId(languageId); 
     setLastLanguageId(languageId); 
    } 
    return salutationItems; 
} 

public void handleLanguageChange(){ 
    this.salutationItems = getSalutationItems(); 
} 
+0

ли вы убедитесь, что другой компонент в этой форме не бросает ошибку проверки? –

+0

Да, я проверил это. Нет ошибок проверки, вызванных –

+1

1. Код HTML в вашем xhtml 2. Одиночная линия, если без фигурных скобок 3. Логика бизнеса в вашем геттере. 4. Метод прослушивателя действий без ActionEvent (неправильная подпись). 5. Проводка Только часть вашего xhtml. 6. Использование Named вместо ManagedBean 7. Использование ConversationScoped вместо ViewScoped 8. Наконец, ваш getter выглядит как actionListener, и ваш actionListener выглядит как сеттер. Это неправильно или не рекомендуется –

ответ

2

Я считаю, что проблема на вашем вызове Ajax. Ajax может быть очень сложно, я бы рекомендовал 2 различных approachs:

<p:ajax render="@form" listener="#{AdressBasics_m.handleLanguageChange}"/> 

или

<p:ajax update=":addressBasicsForm:tabView:stammdaten:somAnrede" listener="#{AdressBasics_m.handleLanguageChange}"/> 
+0

Спасибо, первый сделал это –

+0

Ни один из этих работ для меня ... –

Смежные вопросы