2011-01-03 3 views
2

У меня есть Javascript, что редактирует скрытое поле в моих страницах JSF:Схватив значение HTML с JSF

<h:inputHidden id="data" value="" /> 

и когда я нажимаю на «Отправить» Я хотел бы получить новое значение этого HTML поля который был изменен javascript. Я посмотрел в

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("data"); 

Но это только кажется, работать, если она передается в качестве <f:param/>. Есть ли способ получить ценность через звонок?

ответ

1

Это имя сгенерированного поля ввода HTML, которое отправляется как параметр запроса обычным способом HTTP/HTML. Помните: JSF работает на веб-сервере, создает HTML/CSS/JS, webserver отправляет его по HTTP в webbrowser, webbrowser извлекает HTML/CSS/JS и отображает/применяет/выполняет его. Щелкните правой кнопкой мыши страницу в браузере, выберите View Source, найдите сгенерированный элемент ввода HTML и вы увидите что-то подобное: это

<input type="hidden" id="formid:data" name="formid:data" /> 

где formid является идентификатор родительского <form>, сгенерированный JSF <h:form>. В соответствии с спецификацией HTML входные значения передаются как пары name = value в параметрах запроса.

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

data = requestParameterMap.get("formid:data"); 

Однако, вы также можете просто привязать его к свойству компонента.

<h:inputHidden value="#{bean.data}" /> 

Таким образом, он будет просто доступен как data свойства в методе действий бин без необходимости возиться с запросом параметрами пути низкого уровня.

+0

Хм, это странно, я ввел в форму Id: данные в первый раз, и это не сработало. но теперь он делает !! Большое спасибо BalucC Ваши сообщения и блог действительно очень помогли мне в разработке jsf :) – user560785

+0

привязка - лучший вариант, он действителен для любой области бобов! – Dejell

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