2013-02-24 4 views
0

У меня есть h: inputText, h: selectonemenu и commandbuton. Входной текст является обязательным полем, и я определил его как немедленное = «истина». Затем я, когда я нажимаю кнопку, хочу передать текущее значение selectonemenu управляемому bean-компоненту. Но его passig null. Как я могу справиться с этой проверки, так что это позволяет мне получить значение selectOneMenu в управляемом компоненте ..Как пропустить проверку для вызова ajax?

Мой код ..

<h:inputText id="inputSome" required="true" requiredMessage="Pls enter something"/> 
     <h:message for="inputSome"></h:message> 
     <h:selectOneMenu id="recepients" value="#{controller.selected}" immediate="true"> 
      <f:selectItem itemLabel="Select" itemValue=""/> 
      <f:selectItems value="#{controller.tempNameList1}"></f:selectItems> 


     </h:selectOneMenu> 

     <p:commandButton value="Add" action="#{controller.submit}" 
      immediate="true"/> 
+1

Похоже, что вы не привязаны к '' значения для вашего 'controller' атрибута (или возможно, это опечатка. –

+0

Как говорит Луиджи Мендоса, попробуйте привязать свой 'h: inputText' к свойству в ваш управляемый bean-компонент. Appart from this, он должен принять значение. Можете ли вы показать нам свой код бэк-кода? –

+0

@LuiggiMendoza Его пример кода.Если я привяжу свой h: inputText, проблема все равно останется. Он передаст значение null контроллеру. –

ответ

5

Когда вы immediate=true в CommandButton, затем Invoke Application фаза является непосредственно выполняется пропуски фаз после (и в том числе) валидации. Таким образом, фаза «применения модельных значений» также пропускается, а свойства управляемого компонента остаются неинициализированными. Это заставляет вас передавать значение null для значения selectOneMenu. Решение, вы должны получить значение для selected имущества контроллера вручную, как ниже:

Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 

    for (String key : paramMap.keySet()) { 
     if (key.contains("recepients")) { 
      selected = Integer.parseInt(paramMap.get(key)); 
     } 
    } 
+1

Большое спасибо за ваши ответы, а также спасибо за объяснение проблемы. :) –

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