2012-06-25 2 views
1

У меня есть три выпадающие списки, значения которых были скопированы <h:inputHidden> компонентов с помощью следующей функции JavaScript:Резервное Bean не получают значения, посланные JavaScript

function getBirthDate() { 
    var months = document.getElementById("months") 
    var hidden1 = document.getElementById("formsignup:monthField"); 
    hidden1.value = months.options[months.selectedIndex].text; 
    var days = document.getElementById("days"); 
    var hidden2 = document.getElementById("formsignup:dayField"); 
    hidden2.value = days.options[days.selectedIndex].value; 
    var years = document.getElementById("years"); 
    var hidden3 = document.getElementById("formsignup:yearField"); 
    hidden3.value = years.options[years.selectedIndex].value; 
} 

Вот три <h:inputHidden> компоненты:

<h:inputHidden value="#{signupBean.month}" id="monthField"/> 
<h:inputHidden value="#{signupBean.day}" id="dayField"/> 
<h:inputHidden value="#{signupBean.year}" id="yearField"/> 

Это командная кнопка, которая должна вызывать функцию, которая копирует значения на входные данные, а затем отправляет их в фоновый компонент.

<h:commandButton image="images/images/signup1.png" 
    styleClass="joinnow" 
    id="joinus" action="#{signupBean.save}" 
    onclick="getBirthDate()" /> 

Но они прибывают как null в бэк-боба. Как это вызвано и как я могу его решить?

Редактировать: jQuery зависает, когда я пытаюсь выбрать элементы из компонентов JSF. Есть ли проблема с идентификаторами элементов?

Редактировать: ниже приведен скриншот переменных, отправленных вместе с HTTP-запросом, который доказывает правильность отправки значений. В чем проблема с фасолью?

enter image description here

+0

Ты что правильные измененные значения были отправлены на сервер? Проверьте HTTP-трафик в наборе инструментов разработчика webbrowser. – BalusC

+0

Убедитесь, что ваши '' находятся внутри вашего '', и ваш метод' getBirthDate' работает, вы можете протестировать каждый проход с помощью 'console.log()' в Firefox (используя firebug) или Chrome (используя консоли Chrome, нажав Ctrl + Shift + J). –

+0

О идентификаторах JSF изменит идентификатор компонентов по форме : , например, в '' id для «myInputText» будет «myForm: myInputText», если ваш компонент JSF находится вне формы, например ' 'id myInputText будет« myInputText », потому что он не находится внутри контейнера. –

ответ

0

вы можете проверить объем вашего компонента и, если он становится reintialized во время вашего представить .. в этом случае скрытые поля получает свои начальные значения независимо от того, если значения посылаются со стороны клиента.

0

Вы можете проверить, есть объект или нет, используя предупреждение заявление. Пример

function getBirthDate() { 
var months = document.getElementById("months") 
var hidden1 = document.getElementById("formsignup:monthField"); 
alert(months);alert(months.value); 
alert(hidden1);alert(hidden1.value); 

Если значение объекта равно нулю Идентификатор вы дали, чтобы получить элемент не является правильным .. также проверить значение, которое вы получаете от объекта .. Я думаю, что это может помочь

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