2012-04-19 3 views
0

У меня есть кнопка, которая может установить myBackingBean.myString, а onclick вызывает вызовы метода js, чтобы предупредить это значение. Я просто хочу получить значение myString для поддержки bean-компонента, используя javascript.Как использовать javascript для получения jsf h: outputText значение?

У меня есть скрытый выход, который имеет значение от каркасного боба:

h:outputText id="myOutput" rendered="false" value="#{myBackingBean.myString}" 

то мне нужно, чтобы предупредить это значение в JavaScript FXN, который вызывается кнопкой:

function myFunction() { 

var outPut= document.getElementById("myForm:myOutput").value; 

... 

} 

, но я получил Object required ошибка. Как я могу это исправить? Спасибо заранее.

ответ

1

Убедитесь, что обработчик h: outputText визуализирован (rendered = "false" может просто не добавить его в DOM. Если он не отображается, к нему нельзя получить доступ. Если вам это нужно, используйте h : inputHidden).

Затем убедитесь, что он отображает тег HTML или действует как контейнер с атрибутом id как «myForm: myOutput».

Кроме того, для входных тегов используется .value javascript accesor, поэтому вместо этого используйте inerHTML.

+0

Спасибо за ответ, но не могли бы вы дать мне более подробную информацию? У меня есть кнопка, которая может установить myBackingBean.myString, а событие onclick вызывает этот js-метод. Я просто хочу получить значение myString от поддержки bean-компонента, поэтому я думал, что этот скрытый вывод может помочь. Я изменил ouputText на h: inputHidden id = "hidden1" value = "# {myBackingBean.myString}", но получить ту же ошибку. также я изменил .value на .innerHTML не работал – Celia

+0

Можете ли вы проверить сгенерированный HTML-код? Просто чтобы убедиться, что тип ввода скрыт и что он имеет требуемое значение? – Floydian

+0

Я проверяю элементы, и у меня есть эта строка. это то, что вы имели ввиду? – Celia

0

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

<h:commandButton value="Show" onclick="alert('#{myBackingBean.myString}');"/> 

Но если вы хотите изменить значение «MyString» при нажатии на кнопку, а затем вы хотите, чтобы отобразить новое значение, которое вы должны использовать <a4j:commandButton/> и это OnComplete атрибута, как показано ниже.

<a4j:commandButton value="Change" action="#{myBackingBean.changeString()}" oncomplete="alert('#{myBackingBean.myString}');" /> 
+0

Спасибо. Я попробовал второй, но даже повторил скрытый ввод, значение не обновлялось. теперь кажется невозможным обновить значение клиентской стороны. можно ли использовать оповещения, чтобы показать лицевые сообщения? У меня есть context.addMessage (FacesMessage.FACES_MESSAGES, сообщение); в моем бэк-бэке, тогда как я могу использовать js для оповещения об этом сообщении? – Celia