Обновление параметра URL-адреса JSF AJAX

У меня есть сценарий, в котором у меня есть страница, на которой есть возможность отображать данные. Данные для данных выбираются пользователем, НО должна быть возможность указать прямой URL-адрес для загрузки конкретных данных в таблицу. Для этого я использую параметры в URI для определения службы, которую следует загрузить (www.example.com?service=1).

Пользователь щелкает одну службу, и URL-адрес меняется на www.example.com?service=2, а данные из этой службы загружаются через AJAX и отображаются на странице. Нет постбэка, только частичное обновление страницы. Я хочу избежать полной перезагрузки страницы, поскольку перезагрузка требуется только для данных.

  1. Как мне обновить параметр URL из резервного компонента (т.е. с www.example.com?service=1 на www.example.com?service=2) без перезагрузки страницы?
  2. Как мне прочитать новый параметр URL без повторной отправки страницы?

ОБНОВИТЬ

На данный момент я перенаправляю всю страницу с помощью

FacesContext.getCurrentInstance().getExternalContext().redirect(url); 

и пытаюсь прочитать в параметре, используя

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("service"); 

Однако на самом деле это не то, чего я хочу добиться, поскольку он перезагружает много ненужных данных и усложняет управление другими свойствами на странице! Я хочу обновить параметры и прочитать их, но ТОЛЬКО перезагрузить таблицу данных.


person tarka    schedule 13.06.2012    source источник
comment
@Daniel Ive обновил пост.   -  person tarka    schedule 14.06.2012


Ответы (1)


Я новичок в JSf, но думаю, это поможет, это простой пример:

Предположим, у вас есть <h:inputText> со свойством объекта в качестве значения, например:

<h:form id="formUser">
    <h:inputText value="#{userBean.name}" id="userName" />
</h:form>

Если вам нужно обновить свойство name с помощью ajax-вызова:

<h:commandButton value="Update user" action="#{userBean.updateUserName}">
    <f:ajax render="formUser:userName" execute="formUser:userName" />
</h:commandButton>

Атрибут рендеринга заставит элемент перезагрузиться на странице. Выполнение заставит элемент установить значение, в данном случае, для свойства name UserBean

Таким образом, когда вы вводите имя в этот inputText и нажимаете commandButton, он выполнит метод set для имени и повторно отобразит ввод в представлении, чтобы появилось новое значение.

Но если вам нужен link, вот пример из здесь :

<h:link value="Login page + Param " outcome="login" >
    <f:param name="username" value="mkyong" />
</h:link>

Это то, чего вы действительно хотите?

person Community    schedule 14.06.2012
comment
Спасибо, Даниил, это не совсем то, что я искал. У меня нет проблем с частичной перезагрузкой страницы с помощью ajax в целом. Моя проблема заключается в выполнении обновления параметра URL-адреса AJAX, а затем чтении параметра URL-адреса AJAX. Итак, я хочу изменить URL-адрес с www.example.com?service=1 на www.example.com?service=2 через ajax без перезагрузки страницы. - person tarka; 14.06.2012