Как установить значение с параметрами url с помощью JSF 2.2? [Дубликат]

Преобразовать в целые числа:

my_number = int(input("enter the number"))

Аналогично для чисел с плавающей запятой:

my_decimalnumber = float(input("enter the number"))
27
задан BalusC 27 August 2014 в 07:18
поделиться

3 ответа

Да, вы можете использовать <f:viewParam> , чтобы установить параметр запроса как свойство управляемого компонента.

<f:metadata>
    <f:viewParam name="companyId" value="#{bean.companyId}" />
</f:metadata>

Вы можете при необходимости вызвать действие компонента с помощью <f:viewAction> (только JSF 2.2+) или <f:event type="preRenderView">.

<f:metadata>
    <f:viewParam name="companyId" value="#{bean.companyId}" />
    <f:viewAction action="#{bean.onload}" />
</f:metadata>

При использовании <f:viewAction> вы даже можете вернуть результат навигации.

public String onload() {
    // ...

    return "somepage";
}

Когда не на JSF 2.2, вы можете использовать для этого ExternalContext#redirect() . См. Также среди других . Как выполнить навигацию в режиме прослушивания preRenderView .

Обратите внимание, что это не относится к PrimeFaces. Это просто часть стандартного JSF. PrimeFaces - это просто библиотека компонентов, которая обеспечивает улучшенную поддержку ajax и skinnability.

См. Также:

44
ответ дан Community 22 August 2018 в 22:15
поделиться
  • 1
    Я использовал PostConstruct для этого типа вещей (и доступа к БД). Проблема, которую я только выяснил, заключается в том, что на запрошенных компонентах метод будет вызван на ajax req, который не имеет ничего общего с указанным компонентом. Это не относится к viewAction. Для кого-то интересно, почему: stackoverflow.com/questions/24490152/… – Ced 4 March 2016 в 22:48

параметры url также могут обрабатываться как параметры запроса, поэтому вы также можете получить доступ через

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
21
ответ дан Charles Menguy 22 August 2018 в 22:15
поделиться
  • 1
    Они являются параметрами запроса . Способ, который вы предлагали, однако, позволяет менее мелкозернистую конверсию / валидацию, что может привести к большому количеству ненужного кода шаблона в бэк-компоненте. См. Также раздел "См. Также" ссылки в принятом ответе. – BalusC 24 May 2012 в 20:52

Существует библиотека утилиты, OmniFaces , которая делает это из коробки.

@Inject @Param
private String key;

@Inject @Param
private Long id;
4
ответ дан Kukeltje 22 August 2018 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: