如何使用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