У меня есть выпадающий список на моей главной странице index.xhtml JSF. Связанный код / commandButton выглядит следующим образом:
<h:selectOneMenu id="nodes" value="#{MyBacking.chosenNode}">
<f:selectItems value="#{MyBacking.nodes}" />
</h:selectOneMenu>
<a4j:commandButton value="Retrieve" styleClass="ctrlBtn"
id="retrieveBtn" style="margin-bottom: 2px;"
onclick="#{rich:component('nodeLoadWait')}.show()" # modal
action="#{MyBacking.redirect}"
image="/img/btnRetrieve26.png" />
action
был ранее установлен в 'привет', а в моем faces-context.xml
:
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>hello</from-outcome>
<to-view-id>/nodeMgmt.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
Когда action
был установлен в 'привет', нажатие кнопки retrieve
работало нормально, в этом случае грани обрабатывали бы навигацию, а метод MyBacking.setChosenNode
назначал бы все необходимые данные, так что содержимое файла nodeMgmt.xhtml отображаться полностью заполненным.
Однако, если первоначальное действие, вызванное тем, что пользователь щелкнул retrieve
, превысило время ожидания, веб-страница зависла бы, даже если бин обнаружил время ожидания, и я бы хотел перенаправить пользователя на страницу с истекшим временем .
Чтобы обработать компонент поддержки, возвращающий сообщение о тайм-ауте (обнаружение ошибок, которое уже присутствует, когда «внутри» приложения), я подумал, что вместо использования файла faces-context.xml
я бы обработал его внутренне.
Я обнаружил, что FacesContext.getCurrentInstance (). GetExternalContext (). Redirect, но Javadoc JSF 1.2 не имеет этого. Возможно, это потому, что он не представлен? Это перенаправляет, хотя это сбивает с толку. Почему нет документации по этому методу?
Тем не менее, он перенаправляет меня на страницу, но отображает без учета данных, созданных компонентом во время первоначального запроса. Боб находится в области запроса в настоящее время. Соответствующий код в бобе:
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("nodeMgmt.jsf");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Является ли использование внутреннего java-вызова лучшим способом для такого перенаправления?
Если нет, то лучше ли использовать faces-context.xml
? Если так, то как?
Пока мы здесь - может кто-нибудь направить меня к хорошему источнику чтения для использования FacesContext.getCurrentInstance (). GetExternalContext (), в котором есть достойные примеры того, как сделать простую навигацию с данными, потому что у меня возникают проблемы с поиском.
Приветствия