Я хочу узнать предыдущую страницу, откуда вызывается текущая страница. Основываясь на предыдущей странице, я хочу включить или отключить определенный компонент. Может ли кто-нибудь помочь мне в этом отношении.
Отслеживание предыдущей страницы в JSF
Ответы (1)
Зависит от конкретного функционального требования, которое не совсем ясно из вашего вопроса. Вы можете передать уникальный параметр запроса. Например. когда речь идет о ссылке 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
Я использую ‹f:param› с ‹hx:commandExButton› (который преобразуется в ‹input type=submit›), который является реализацией JSF от IBM, и он не работает. Могу ли я передать его как входной скрытый тип?
- person Nrusingha; 30.08.2011
Вы все еще используете старый JSF 1.x? Вместо этого используйте командную ссылку.
<f:param>
в командных кнопках работает только в JSF 2.x. Если вы используете JSF 1.2 (и, следовательно, не JSF 1.1!), вы также можете вместо этого использовать <f:setPropertyActionListener>
. Это позволяет вам установить свойство компонента напрямую, а не передавать его в качестве манипулируемого параметра запроса.
- person BalusC; 30.08.2011