2013-03-06 16 views
1

Мне нужно использовать две веб-страницы selections на моей веб-странице.Установка двух p: selectOneMenu s

  1. Моя вторая selectonmenu работает, когда она имеет статические данные все данные можно просматривать в кнопку мыши после того, как нажать на кнопку

  2. Но это не работает с динамическими данными данных получить нагрузку на это после выбора значения из 1 selectonmenu с использованием Ajax загрузки данных в этом selectonmenu, но это всегда показывает нулевое значение после того, как выбрать значение из этого

этого код для пункта 1

<p:tab id="create_Subnet_T" title="Create subnet"> 
<h:form id="create_Subnet"> 
    <h:panelGrid columns="2" cellpadding="10"> 

     <h:outputText value="Area:"/> 
     <p:selectOneMenu id="AreaDDL" value="#{a_Subnet.selectedArea}" required="true"> 
      <f:selectItem itemLabel="Select area" itemValue="" /> 
      <f:selectItems value="#{a_Subnet.areaList}" /> 


     </p:selectOneMenu> 

     <h:outputText id="create_Subnet_OT" value="IP Address :" /> 
     <p:selectOneMenu id="resourceDDL" value="#{a_Subnet.selectedResource}" required="true"> 
      <f:selectItem itemLabel="Select resource" itemValue="A" /> 
      <f:selectItem itemLabel="Select resource" itemValue="B" /> 
      <f:selectItem itemLabel="Select resource" itemValue="C" /> 

     </p:selectOneMenu> 

     <h:outputText id="netmask_OT" value="netmask :" /> 
     <p:inputText id="netmask_IT" required="true" value="#{a_Subnet.netmask}"/> 

     <h:outputText id="description_OT" value="Description :" /> 
     <p:inputTextarea id="description_ITA" required="true" value="#{a_Subnet.description}"/> 

     <p:commandButton id="create_Subnet_Btn" value="Create" action="#{a_Subnet.test}" /> 

    </h:panelGrid> 
</h:form> 

Это код, который не работает (для пункта 2):

<p:tab id="create_Subnet_T" title="Create subnet"> 
    <h:form id="create_Subnet"> 
     <h:panelGrid columns="2" cellpadding="10"> 

      <h:outputText value="Area:"/> 
      <p:selectOneMenu id="AreaDDL" value="#{a_Subnet.selectedArea}" required="true"> 
       <f:selectItem itemLabel="Select area" itemValue="" /> 
       <f:selectItems value="#{a_Subnet.areaList}" /> 

       <p:ajax event="change" update=":Subnet_TV:create_Subnet:resourceDDL" 
         listener="#{a_Subnet.setResourceToDropDownList(a_Subnet.selectedArea)}"/> 
      </p:selectOneMenu> 

      <h:outputText id="create_Subnet_OT" value="IP Address :" /> 
      <p:selectOneMenu id="resourceDDL" value="#{a_Subnet.selectedResource}" required="true"> 
       <f:selectItem itemLabel="Select resource" itemValue="A" /> 
       <f:selectItems value="#{a_Subnet.resourceList}" /> 
      </p:selectOneMenu> 

      <h:outputText id="netmask_OT" value="netmask :" /> 
      <p:inputText id="netmask_IT" required="true" value="#{a_Subnet.netmask}"/> 

      <h:outputText id="description_OT" value="Description :" /> 
      <p:inputTextarea id="description_ITA" required="true" value="#{a_Subnet.description}"/> 

      <p:commandButton id="create_Subnet_Btn" value="Create" action="#{a_Subnet.test}" /> 

     </h:panelGrid> 
    </h:form> 
</p:tab> 

Этот метод используется в AJAX для проверки вывода:

public void test(){ 
    System.out.println("hjhjjh"); 
    System.err.println("Area = "+selectedArea); 
    System.err.println("Resource = "+selectedResource); 
    System.err.println("SNetmask = "+netmask); 
    System.err.println("Description = "+description); 

} 
+0

Убедитесь, что ваш управляемый bean-компонент 'a_Subnet' по крайней мере' @ ViewScoped'. –

+0

управляемый bean-класс находится в «@requestScope», чтобы изменить его на «@ViewScoped». Nothin бывает – sithila

+0

Измените его на '@ ViewScoped', если вы используете аннотации пакетов javax.faces. Если вы используете CDI, вы должны установить их с помощью '@ SessionScoped' или получить' @ ViewScoped' из [MyFaces CODI] (http://myfaces.apache.org/extensions/cdi/) –

ответ

1

Когда вы имеете дело с ajax на той же странице, рекомендуется, чтобы ваш управляемый bean-компонент имел как минимум @ViewScoped аннотация с , bean в этой области живет до тех пор, пока вы i nteracting с тем же видом JSF в окне браузера/вкладке (от Communication in JSF 2: Managed Bean Scopes).

Если вы используете аннотации CDI (например, @Named), то у вас не будет аннотации @ViewScoped. Чтобы сделать его доступным для CDI, вы должны добавить MyFaces CODI.

Как дополнительная рекомендация, не следует писать сервер бизнес-логики внутри методов getters/seters с getters get called multiple times.

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