Acceso a parámetros de cadena de consulta en un método de construcción posterior en un bean administrado con ámbito de vista

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

  •  21-12-2019
  •  | 
  •  

Pregunta

Tengo la siguiente página 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>

El bean administrado corresponde a la página JSF anterior.

@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;
    }
}

estoy pasando id como parámetro de cadena de consulta usando la URL - https://localhost:8181/Project-war/admin_side/Test.jsf?id=1.

Tratando de mostrar id en el init() El método es siempre null.

Esta es una demostración.En realidad, <f:viewParam> en realidad se pone dentro <ui:define name="metaData"> y en la plantilla maestra <ui:insert name="metaData"/> se define.

¿Qué estoy pasando por alto aquí?

Varias veces pasé dichos parámetros y los convertí a una entidad JPA usando los convertidores apropiados, pero no sé por qué no se establece un valor escalar en una propiedad de un bean administrado.He intentado cambiar el tipo de id a String pero eso tampoco ayudó (ni @ManagedProperty(value="#{id}") trabajó).

¿Fue útil?

Solución

El valor de f:viewParam no está disponible durante @PostConstruct.Usar f:viewAction en cambio.

Ver

Ver también

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top