Доступ к параметрам строки запроса в методе пост-конструкции в управляемом компоненте с областью представления

StackOverflow https://stackoverflow.com//questions/23022831

  •  21-12-2019
  •  | 
  •  

Вопрос

У меня есть следующая страница XHTML.

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <title>Test</title>
    </h:head>

    <f:metadata>
        <f:viewParam name="id" value="#{testManagedBean.id}" maxlength="20"/>
    </f:metadata>

    <h:body>
        <h:form id="form" prependId="true">

        </h:form>
    </h:body>
</html>

Управляемый компонент соответствует указанной выше странице JSF.

@ManagedBean
@ViewScoped
public final class TestManagedBean implements Serializable
{
    private static final long serialVersionUID = 1L;
    private Long id;

    @PostConstruct
    private void init() {
        System.out.println("id = "+id);
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

я прохожу id в качестве параметра строки запроса с использованием URL-адреса – https://localhost:8181/Project-war/admin_side/Test.jsf?id=1.

Пытаюсь отобразить id в init() метод всегда null.

Это демонстрация.В действительности, <f:viewParam> на самом деле помещается внутрь <ui:define name="metaData"> и в главном шаблоне <ui:insert name="metaData"/> определено.

Что я здесь упускаю из виду?

Я несколько раз передавал такие параметры и преобразовывал их в объект JPA с помощью соответствующих преобразователей, но не знаю, почему скалярное значение не устанавливается для свойства управляемого компонента.Я попробовал изменить тип id в String, но это тоже не помогло (и @ManagedProperty(value="#{id}") работал).

Это было полезно?

Решение

Значение f:viewParam недоступен во время @PostConstruct.Использовать f:viewAction вместо.

Видеть

Смотрите также

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top