tag atributos jsf jsf-2 seam parameter-passing

atributos - jsf h tag



Cómo pasar un parámetro junto con h: commandButton (1)

O pase como argumento de método (solo si su entorno admite EL 2.2),

<h:commandButton value="English" action="#{localeSelector.change(''en'')}" /> <h:commandButton value="Deutsch" action="#{localeSelector.change(''de'')}" /> <h:commandButton value="Français" action="#{localeSelector.change(''fr'')}" />

con

public void change(String language) { locale = new Locale(language); // ... }

O use <f:setPropertyActionListener>

<h:commandButton value="English" action="#{localeSelector.change}"> <f:setPropertyActionListener target="#{localeSelector.language}" value="en" /> </h:commandButton> <h:commandButton value="Deutsch" action="#{localeSelector.change}"> <f:setPropertyActionListener target="#{localeSelector.language}" value="de" /> </h:commandButton> <h:commandButton value="Français" action="#{localeSelector.change}"> <f:setPropertyActionListener target="#{localeSelector.language}" value="fr" /> </h:commandButton>

con

private String language; public void change() { locale = new Locale(language); // ... }

O usa <f:param>

<h:commandButton value="English" action="#{localeSelector.change}"> <f:param name="language" value="en" /> </h:commandButton> <h:commandButton value="Deutsch" action="#{localeSelector.change}"> <f:param name="language" value="de" /> </h:commandButton> <h:commandButton value="Français" action="#{localeSelector.change}"> <f:param name="language" value="fr" /> </h:commandButton>

con

public void change() { locale = new Locale(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("language")); // ... }

(También puede dejar que JSF lo configure automáticamente mediante @ManagedProperty("#{param.language}") , pero esto requiere que el bean se solicite con ámbito, o a <f:viewParam> , consulte también ViewParam vs @ManagedProperty (value = "# {param.id}") )

Suficientes formas de pasar un parámetro de vista a controlador. Elige tu opción. El <h:inputHidden> sirve en el contexto JSF un propósito algo diferente y solo puede ser manipulado por JavaScript en el onclick que es feo.

Uno de los enfoques más comunes para cambiar la configuración regional en JSF + Seam - con <h:selectOneMenu> :

<h:form action="#{localeSelector.select}" rendered="false"> <h:selectOneMenu value="#{localeSelector.language}" onchange="submit()"> <f:selectItem itemLabel="English" itemValue="en" /> <f:selectItem itemLabel="Francais" itemValue="fr" /> </h:selectOneMenu> </h:form>

Quiero implementar cambios de configuración regional con botones. Entonces, la pregunta es: ¿cómo pasar el parámetro (en, fr, etc.) para actualizar el bean con <h:commandButton> ? Tal vez <h:inputHidden> sería de ayuda?