Генерация идентификатора составного компонента JSF2.0 - PullRequest
0 голосов
/ 24 декабря 2010

Я нахожусь в процессе создания нового веб-приложения с использованием JSF2.0 в Weblogic 11g. Я использую JSF Ajax для отправки формы. Я довольно новичок в JSF, поэтому все еще изучаю веревки. Главная страница имеет 3 формы на вкладке jQuery. В исходном коде было много повторяющихся полей ввода, таких как userName, пароль и т. Д. (Идентификатор предварялся идентификатором формы, т.е. myform1: userName). Я решил, что было бы неплохо использовать составные компоненты для дублированных полей. Вот мой код компонента:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:composite="http://java.sun.com/jsf/composite"
  xmlns:h="http://java.sun.com/jsf/html">

<composite:interface>
    <composite:attribute name="value" required="true"/>
</composite:interface>

<composite:implementation>

<label for="#{cc.id}">User Name</label>
<h:inputText
        id="#{cc.id}"
        size="15"
        value="#{cc.attrs.value}"
        required="true"
        label="User Name">
</h:inputText>
</composite:implementation>

</html>

А вот вызов компонента в xhtml:

<p>
    <cc:userName id="userName" value="#{soapTestingBackingBean.userName}"/>
</p>

Проблема теперь в том, что все мои идентификаторы имеют добавленный элемент, поэтому стали myForm1: userName: userName. Хотя это не ограничитель показа, это означает, что мой javascript теперь должен ссылаться на длинные идентификаторы, а также на мои вызовы Ajax (я обычно выполняю @form, но отображаю определенные элементы). Я пытаюсь сделать код максимально читабельным и понятным. Так что был бы признателен, если бы кто-нибудь знал, есть ли элегантная работа вокруг этого или, может быть, какой-то магический атрибут, который я пропустил, чтобы отключить его. Я экспериментировал с атрибутом forceID из библиотеки tomahawk, но это только вызвало дополнительные проблемы в моих вызовах Ajax. Благодарю.

1 Ответ

0 голосов
/ 02 марта 2011

в некоторых библиотеках java-скриптов jQuery испытывает проблемы с новым форматом для идентификаторов jsf 2.0: elementId - поэтому вместо использования

$(function() {
    $( "#datepicker" ).datepicker();
});

мне пришлось использовать

$(function() {
    $(document.getElementById('addform:datepicker')).datepicker();
});
...