Отслеживание предыдущей страницы в JSF

Я хочу узнать предыдущую страницу, откуда вызывается текущая страница. Основываясь на предыдущей странице, я хочу включить или отключить определенный компонент. Может ли кто-нибудь помочь мне в этом отношении.


person Nrusingha    schedule 29.08.2011    source источник


Ответы (1)


arrow_upward
2
arrow_downward

Зависит от конкретного функционального требования, которое не совсем ясно из вашего вопроса. Вы можете передать уникальный параметр запроса. Например. когда речь идет о ссылке GET:

<h:link value="Next" outcome="next">
    <f:param name="foo" value="bar" />
</h:link>

или POST-ссылку:

<h:form>
    <h:commandLink value="Next" action="next">
        <f:param name="foo" value="bar" />
    </h:commandLink>
</h:form>

с в next.xhtml

<h:someComponent rendered="#{param.foo == 'bar'}">
    ...
</h:someComponent>

или если вас не волнует значение параметра:

<h:someComponent rendered="#{not empty param.foo}">
    ...
</h:someComponent>

Альтернативой, которая может быть намного лучше, если вы не хотите, чтобы конечный пользователь мог манипулировать запросом, является установка свойства bean-компонента во время действия POST, а затем возврат к следующему представлению:

<h:form>
    <h:commandLink value="Next" action="#{bean.next}" />
</h:form>

с напр.

public String next() {
    foo = "bar";
    return "next";
}

и в next.xhtml

<h:someComponent rendered="#{bean.foo == 'bar'}">
    ...
</h:someComponent>
person BalusC    schedule 29.08.2011
comment
Я использую ‹f:param› с ‹hx:commandExButton› (который преобразуется в ‹input type=submit›), который является реализацией JSF от IBM, и он не работает. Могу ли я передать его как входной скрытый тип? - person Nrusingha; 30.08.2011
comment
Вы все еще используете старый JSF 1.x? Вместо этого используйте командную ссылку. <f:param> в командных кнопках работает только в JSF 2.x. Если вы используете JSF 1.2 (и, следовательно, не JSF 1.1!), вы также можете вместо этого использовать <f:setPropertyActionListener>. Это позволяет вам установить свойство компонента напрямую, а не передавать его в качестве манипулируемого параметра запроса. - person BalusC; 30.08.2011