Я использую Primefaces 3.0. У меня есть DataTable с SelectionMode одного, как показано ниже:Как перейти на другую страницу onRowSelect
<p:dataTable id="paySumm" var="PSummRow"
value="#{beanPySummary.PySummariesModel}"
selection="#{beanPySummary.selectedPySummary}" selectionMode="single" paginator="true"
rows="15" paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink}
{CurrentPageReport} {NextPageLink}" rowsPerPageTemplate="10,15,25,35" >
<p:ajax event="rowSelect" listener="#{beanPySummary.onRowSelect}" />
У меня есть бизнес-логику в методе onRowSelect, а затем я перейти на другую страницу.
public String onRowSelect(SelectEvent event) {
......
ConfigurableNavigationHandler configurableNavigationHandler =
getCurrentInstance().getApplication().getNavigationHandler();
configurableNavigationHandler.performNavigation("MoreDetail?faces-redirect=true
return "";
У меня есть некоторые данные, которые я хотел бы передать как параметры для MoreDeatils с includeViewParam. Я могу определить их как f: ViewParam в MoreDeatils.xhtml. Я не уверен, что мне нужно использовать аннотацию ManagedProperty и в то же время определять эти параметры как скрытые поля на моей текущей странице. Здесь мне нужны советы и указания.
Спасибо, Peter
Thanks BalucsC. Вы здоровы, а не только потому, что вы ответили на мой вопрос, но за то, что приняли боль и помогли другим. Да, у меня был недействительный метод onRowSelect, но я заметил, что он дважды вызывал конструктор. Поэтому я добавил String в качестве возвращаемого параметра, после чего он прекратил вести себя таким образом. Я не уверен, почему он сутулый, и я также не уверен, почему он дважды вызывал конструктор, так как я наблюдал это в режиме отладки. Я уверен, что вы можете объяснить. Огромное спасибо. – Peter
Hi BalusC, пожалуйста, несите мое невежество. Я не уверен, как отправить свой код с комментариями, поэтому я просто пытаюсь объяснить здесь. Все работает отлично, что находится в методе onRowSelect, за исключением того, что он открывает диалоговое окно «Загрузка файла» для MoreDetails вместо загрузки этой страницы. Я могу опубликовать свой код под новым сообщением, если вы захотите. Кроме того, мне еще нужно f ViewParm в моем MoreDeatl xhtml? Благодарю. – Peter
Пример в моем ответе предполагает, что вы сопоставили 'FacesServlet' в шаблоне URL' * .xhtml'. Если вы сопоставили его с другим шаблоном URL-адреса, например '* .jsf', вы должны, естественно, изменить URL-адрес переадресации. Например. 'MoreDetai.jsf' вместо' MoreDetail.xhtml' (или лучше, измените шаблон URL на '* .xhtml', чтобы вам никогда не приходилось возиться с виртуальными URL-адресами). – BalusC