В JSF 1.x обычным способом является возвращение String
в качестве результата навигации.
public String displayItems() throws IOException {
MyClass theClass = (MyClass) dataTable.getRowData();
String theId = theClass.getIdentityNumber();
return "page2";
}
в сочетании со следующей записью в faces-config.xml
:
<navigation-rule>
<navigation-case>
<from-outcome>page2</from-outcome>
<to-view-id>/page2.jsf</to-view-id>
</navigation-case>
</navigation-rule>
Затем он перейдет к page2.jsf
.
В JSF 2.x вам не нужен faces-config.xml
. Просто верните точное имя файла без расширения, например, "page2"
и JSF автоматически найдет правильный вид. Это называется неявная навигация .
Обновление : у вас, по-видимому, один компонент-контроллер на страницу, и вы хотите обмениваться данными между этими компонентами, не ссылаясь на другой компонент на странице. Очень разумно Это выполнимо путем разделения данных на другой управляемый bean-компонент, который должен быть введен как управляемое свойство в обоих bean-компонентах «controller».
1027 * Е.Г. *
public class ControllerBean1 {
private DataBean dataBean;
public String submit() {
MyClass theClass = (MyClass) dataTable.getRowData();
String theId = theClass.getIdentityNumber();
dataBean.setTheId(theId);
return "page2";
}
// ...
}
И
public class ControllerBean2 {
private DataBean dataBean;
// ...
}
Вы можете получить к нему доступ в page2
следующим образом:
<h:outputText value="#{controllerBean2.dataBean.theId}" />
В JSF 1.x вам нужно внедрить его с помощью <managed-property>
вface-config. Вы можете найти пример в этой статье . В JSF 2.x вы можете просто аннотировать управляемое свойство, используя @ManagedProperty
. В будущих вопросах, пожалуйста, укажите версию JSF, которую вы используете. Таким образом, мы можем дать более подробные подходящие ответы без шума. JSF 2.x имеет довольно много различий (улучшений) в подходах к вещам.