powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Richfaces h:link задать значение поля.
13 сообщений из 13, страница 1 из 1
Richfaces h:link задать значение поля.
    #37669996
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Есть не большой вопрос, есть такая конструкция
Код: java
1.
2.
3.
4.
5.
                            <a4j:repeat value="#{userTest.result}" var="res">
                                <a href="#" onclick="setValue(#{rich:element('result1')},#{rich:element('district')})">
                                    <h:outputText value="#{res}" id="result1"/>
                                </a><br/>
                            </a4j:repeat>



Как при клике на эту ссылку задать значения поля. Пробовал написать js скрипт
Код: javascript
1.
2.
3.
4.
function setValue(getparamId, setParamId){
    i = document.getElementById(getparamId).value;
    document.getElementById(setParamId).value = i;
}



Только на моменте получения значения говорит, что Cannot read propeprty 'value' of null хотя в отладке id элемента приходит правильный. Помогите пожалуйста.
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37670745
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опишите какая перед вами стоит задача, у меня есть ощущение что вы решаете не самым оптимальным способом. Я постараюсь помочь. В принципе насколько я понял, на данный момент вы можете 1) попробовать заменить a4j:repeat на ui:repeat и 2) Может вместо простого javascript вызова использовать ajax? Мне надо больше информации о вашей задаче, возможно там вообще все намного проще.
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37670814
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Core12Cannot read propeprty 'value' of null хотя в отладке id элемента приходит правильный. Помогите пожалуйста.

Говорит вам, что

document.getElementById(getparamId) = null
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37670827
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или
document.getElementById(setParamId) = null
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37671126
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынц

То есть сначала выбирается верхний уровень иерархии. В нашем случае это Регион.
В зависимости, от выбранного региона отображается список районов, в виде гиперссылок(см. рисунок).
При при клике на эту ссылку в поле район должно появится значение выбранного элемента.
Такая же методика для всех последующих элементов.
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37671200
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно, тогда предлагаю вам два варианта -
1) попробуйте заменить a4j:repeat на ui:repeat, насколько я помню у a4j:repeat есть косяк с clientId, может это поможет и
2) более правильный вариант - что вам мешает по клику на район послать ajax запрос, в который передать выбранный район, и отрендерить поле район? Это правильнее чем простой javascript -потому что значение выбранного района попадет в вашу модель(JSF bean). В случае жаваскрипта, даже если ваша логика отработает - то после того как пользователь нажмет F5, значение поле обнулится.

Если же вас вариант с ajax не устраивает почему-то, то попробуйте заменить document.getElementById на $() функцию jQuery
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37671205
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути, можете сделать так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Bean{
private String selectedRegion;

public void selectRegion(String region){
    selectedRegion = region;
}

//getters setters
}


Код: html
1.
2.
3.
4.
5.
6.
7.
<a4j:repeat value="#{userTest.result}" var="res">
                                <a4j:commandLink actionListener="#{bean.selectRegion(res)}" reRender="district1">
                                    <h:outputText value="#{res}" id="result1"/>
                                </a4j:commandLink><br/>
                            </a4j:repeat>

<h:inputText value="#{bean.selectedRegion}" id="district1"/>
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37671822
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Сделал класс, на основе того что вы написали выше.
Только при запуске проекта он валится в ексепшн говорит, что
Failed to parse the expression [#{bean.selectRegion(res)}]

хотя в классе все этот метод описан, гетеры сеттеры есть вот код бина
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@ManagedBean
public class Bean{
    private String selectedRegion;

    public void selectRegion(String region){
        selectedRegion = region;
    }

    public String getSelectedRegion() {
        return selectedRegion;
    }

    public void setSelectedRegion(String selectedRegion) {
        this.selectedRegion = selectedRegion;
    }
}
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37672213
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Core12,

Читайте спецификацию:
http://webdownload.exadel.com/downloads/ajax4jsf/documentation/tldDoc/a4j/commandLink.html

actionListener - MethodBinding pointing at method acception an ActionEvent with return type void.
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37672463
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как тогда в бине значение получать ?
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37672519
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Core12,

Например, вот так
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37672638
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТолько при запуске проекта он валится в ексепшн говорит, что
Failed to parse the expression [#{bean.selectRegion(res)}]

Понятно, значит ваш веб контейнер не поддерживает EL 2. Данный пример в принципе можно переписать и без него, но я вам очень рекомендую все-таки повозиться и добавить поддержку EL2 в ваш проект. Для этого вам надо положить jboss-el.jar в WEB_INF/lib, и прописать в web.xml вот это

Код: xml
1.
2.
3.
4.
<context-param>     
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>



Взято отсюда -
http://stackoverflow.com/questions/8325298/invoking-methods-with-parameters-by-el-in-jsf-1-2

После того как вы настроите, у вас появится возможность вызывать методы с параметрами и дополнительные плюшки. Кстати очень рекомендую вам посмотреть на фреймворк Seam, коли вы разрабатываете приложение под jsf и richfaces.

Теперь о втором варианте, тут вам даже ничего настраивать не придется, ведь можно воспользоваться a4j:actionparam

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
<a4j:repeat value="#{userTest.result}" var="res">
                                <a4j:commandLink reRender="district1">
                                     <a4j:actionparam name="region" value="#{res}" assignTo="#{bean.selectedRegion}"/>
                                    <h:outputText value="#{res}" id="result1"/>
                                </a4j:commandLink><br/>
                            </a4j:repeat>

<h:inputText value="#{bean.selectedRegion}" id="district1"/>



a4j:actionparam - конкретно в вашем случае наверное даже идеологически правильнее, как видите нам даже actionListener по сути не нужен, параметр работает так, что сам вызывает сеттер и обновляет модель, что весьма удобно.
...
Рейтинг: 0 / 0
Richfaces h:link задать значение поля.
    #37673091
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо все работает.
Только не большая поправочка, для richfaces4 <a4j:actionparam>, заменили на <a4j:param>
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Richfaces h:link задать значение поля.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]