Как заполнить тег выбора в HTML для JSF 2? - PullRequest
1 голос
/ 03 ноября 2011

У меня есть этот код , который отлично работает в HTML, как вы можете видеть, но как получить значения тега <select /> для вставки в мой bean-компонент?

Примерно так:

<h:outputLabel for="state" value="State:" />
<h:selectOneMenu id="state" value="#{bean.state}" />

Я много чего пробую, но пока ничего.Есть идеи?

Ответы [ 4 ]

2 голосов
/ 03 ноября 2011

Это не сработает. JSF необходимо знать обо всех выпадающих элементах.

Либо используйте элемент простого HTML <select> вместо <h:selectOneMenu> и захватите переданное значение с помощью порта @ManagedProperty или <f:viewParam>, или , который JS-код превращает в JSF резервный код компонента, чтобы вы могли использовать <f:selectItems> Вы можете использовать <f:ajax> для заполнения и рендеринга 2-го выпадающего списка.

1 голос
/ 03 ноября 2011

Функции Javascript, кажется, принимают id с select с.

Если вы сделаете <h:form prependId="false"> и <h:selectOneMenu id="city", тогда "city" будет id из select предоставлено JSF.Просто передайте эти id с функциям.

<h:form prependId="false">
    <h:selectOneMenu id="city" value="#{bean.selectedCity}">

    </h:selectOneMenu>

    <h:selectOneMenu id="state" value="#{bean.selectedState}">

    </h:selectOneMenu>
</h:form>

<script language="JavaScript" type="text/javascript" charset="utf-8">
    $(document).ready(function() {
        new dgCidadesEstados({
            cidade: document.getElementById('city'),
            estado: document.getElementById('state')
        });
    });            
</script>
0 голосов
/ 03 ноября 2011

У меня есть глупая (или забавная ) идея, когда я интегрирую CKEditor в JSF (посмотрите, это замечательно).

Таким образом, CKEditor не полностью поддерживает JSF, но поддерживает сами HTML и JS (jQuery). При редактировании в CKEditor он создает другие теги, которые пользователь может вводить в него, а когда пользователь отправляет информацию на сервер, в нем ничего не найдено. Поэтому я создал <h:inputTextArea value="#{bean.textEditor}"/> и, когда пользователь отправил запрос, он запускает скрипт, чтобы установить его значение на <h:inputTextArea/>:)

Возвращаясь к вашему вопросу , я бы запустил JS-скрипт для этой цели :). Вы можете использовать <h:inputHidden value=#{bean.city}/> и onclick событие для кнопки отправки или что-то вроде что поделать :). Но в этом случае вам необходимо самостоятельно проверить данные, чтобы убедиться, что эта информация не соответствует действительности.

0 голосов
/ 03 ноября 2011

Вам необходимо использовать тег <h:selectItems>. Хорошее введение - здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...