单击带有JSF的Button,将参数传递给另一个视图(和控制器)

时间:2017-10-27 13:54:16

标签: jsf jsf-2 parameters parameter-passing

如何使用JSF将params传递到另一个视图?将解释:

全部以 index.xhtml 开头,索引使用usuarioController(我称之为usuarioBean)

<f:metadata>
   <f:viewParam name="id" value="#{usuarioBean.usuario.id}" />
   <f:viewParam name="nome" value="#{usuarioBean.usuario.nome}" />
</f:metadata>
<h:form>    
<h:dataTable value="#{usuarioBean.listarUsuarios()}" var="usuario">
            <h:column>
                <f:facet name="header">Id</f:facet>
                <h:outputText value="#{usuario.id}"></h:outputText>
            </h:column>

            <h:column>
                <f:facet name="header">Nome</f:facet>
                <h:outputText value="#{usuario.nome}"></h:outputText>
            </h:column>

            <h:column>
                <f:facet name="header">Opcoes</f:facet>                   
                <h:link value="Cadastrar Endereco" outcome="endereco?faces-redirect=true" includeViewParams="true" />
            </h:column>
        </h:dataTable>
    </h:form>

我的控制器是基本的:

@ViewScoped
@ManagedBean(name="usuarioBean")
public class UsuarioController implements Serializable {

    @Inject
    private EntityManager manager;
    private Usuario usuario;

    public UsuarioController(){
        this.usuario = new Usuario();
    }

    public List<Usuario> listarUsuarios(){
        return manager.createNativeQuery("SELECT * FROM usuario", Usuario.class).getResultList();
    }
    (...)

点击“Cadastrar Endereco”我想调用页面 endereco.xhtml (它使用EnderecoController,名为enderecoBean),我希望得到参数 id nome ,但我无法获取这些参数。

endereco.xhtml 中,我有:

<f:metadata>
            <f:viewParam name="id" value="#{enderecoBean.usuario.id}" />
            <f:viewParam name="nome" value="#{enderecoBean.usuario.nome}" />
        </f:metadata>

Id: <h:inputText value="#{enderecoBean.usuario.id}" />
        <br />
        Nome: <h:inputText value="#{enderecoBean.usuario.nome}" />
        <br />

我的控制器也是基本的:

@ViewScoped
@ManagedBean(name="enderecoBean")
public class EnderecoController implements Serializable {

    @Inject
    private EntityManager manager;
    private Endereco endereco;
    private Usuario usuario;

    public EnderecoController(){
        this.endereco = new Endereco();
    }

    public List<Endereco> listarEnderecos(){
        return manager.createNativeQuery("SELECT * FROM usuario", Endereco.class).getResultList();
    }

我需要恢复这个参数因为我需要保存的软糖,并且软体动物依赖于大麻。

有关详细信息,我的代码位于:github.com/eltonsantos/embeddedClasses

0 个答案:

没有答案