Boa tarde.
Preciso criar usuario do sistema (model usuarioLogin) a partir de uma lista de um funcionario (model funcionario) já cadastrado.
O que me ocorre é que consigo alterar um usuarioLogin mas não consigo cadastrar um, isso é devido eu estar passando o parametro <f:param name="id" value="#{funcionario.id}" /> da tela ConsultaFuncionario.xhtml e pegando em <o:viewParam name="id" value="#{cadastroUsuarioLoginBean.usuarioLogin}" /> da tela CadastroUsuarioLogin e esse registro ainda não existir. Acredito que eu esteja no caminho errado, como eu poderia corrigir isso?
Estou fazendo assim:
@Entity
@Table(name = "USUARIOLOGIN")
public class UsuarioLogin implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
private boolean enable;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "USULOG_NIVAUT", joinColumns = @JoinColumn(name = "USU_id"), inverseJoinColumns = @JoinColumn(name = "NIVAUT_id"))
private List<NivelAutoridade> niveisAutoridade;
Classe Funcionario:
@Entity
@Table(name = "funcionario")
public class Funcionario implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "profissao_id", referencedColumnName = "id")
private Profissao profissao;
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "FuncionarioSituacao_id", referencedColumnName = "id")
private FuncionarioSituacao funcionarioSituacao;
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "NivelAutoridade_id", referencedColumnName = "id")
private NivelAutoridade nivelAutoridade;
//private UsuarioLogin usuarioLogin;
@Id
@GeneratedValue
private Long id;
private String nome;
private String funcao;
ConsultaFuncionario.xhtm
<f:metadata>
<f:viewAction action="#{consultaFuncionariosBean.consultar}" />
</f:metadata>
<ui:define name="titulo">Funcionarios</ui:define>
<ui:define name="corpo">
<h1>Funcionários</h1>
<p:megaMenu orientation="#" style="margin-top:20px">
<p:menuitem value="Novo Funcionário" url="CadastroFuncionario.xhtml"
icon="ui-icon-pencil" />
</p:megaMenu>
<h:form id="frm">
<p:messages showDetail="false" showSummary="true" autoUpdate="true" />
<p:dataTable value="#{consultaFuncionariosBean.funcionarios}"
var="funcionario" border="1" cellspacing="0" cellpadding="2"
paginator="true" rows="5" paginatorPosition="bottom"
rowStyleClass="#{funcionario.nome eq 'Kleber Tognoli' ? 'colored' : ''}"
sortBy="#{funcionario.nome}">
<p:column headerText="Nome" filterBy="#{funcionario.nome}">
<h:outputText value="#{funcionario.nome}" />
</p:column>
<p:column headerText="Profissão"
filterBy="#{funcionario.profissao.profissao}">
<h:outputText value="#{funcionario.profissao.profissao}" />
</p:column>
<p:column headerText="Função" filterBy="#{funcionario.funcao}">
<h:outputText value="#{funcionario.funcao}" />
</p:column>
<p:column headerText="Ativo?"
filterBy="#{funcionario.funcionarioSituacao}">
<h:outputText
value="#{funcionario.funcionarioSituacao.funcionarioSituacao}" />
</p:column>
<p:column headerText="Nível de Acesso"
filterBy="#{funcionario.nivelAutoridade.id}">
<h:outputText value="#{funcionario.nivelAutoridade}" />
</p:column>
<p:column>
<p:button icon="ui-icon-pencil" title="Usuario Login"
outcome="/CadastroUsuarioLogin">
<f:param name="id" value="#{funcionario.id}" />
<f:param name="nomeFuncionario" value="#{funcionario.nome}" />
</p:button>
<p:button icon="ui-icon-pencil" title="Editar"
outcome="/CadastroFuncionario">
<f:param name="id" value="#{funcionario.id}" />
</p:button>
<p:commandButton icon="ui-icon-trash" title="Excluir"
process="@this" update="@form"
action="#{consultaFuncionariosBean.excluir}">
<f:setPropertyActionListener value="#{funcionario}"
target="#{consultaFuncionariosBean.lancamentoSelecionado}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
CadastroUsuarioLogin.xhtml
<f:metadata>
<o:viewParam name="id" value="#{cadastroUsuarioLoginBean.usuarioLogin}" />
<o:viewParam name="nomeFuncionario" value="#{nomeFuncionario}" />
<f:viewAction action="#{cadastroUsuarioLoginBean.prepararCadastro}" />
</f:metadata>
<ui:define name="titulo">Cadastro Usuarios do Sistema</ui:define>
<ui:define name="corpo">
<h1>Cadastro de Usuários do Sistema</h1>
<p:megaMenu orientation="#" style="margin-top:20px">
<p:menuitem value="Listar Funcionários"
url="ConsultaFuncionarios.xhtml" icon="ui-icon-pencil" />
<p:menuitem value="Nova Profissão" url="CadastroProfissao.xhtml"
icon="ui-icon-pencil" />
<p:menuitem value="Nova Situação"
url="CadastroFuncionarioSituacao.xhtml" icon="ui-icon-pencil" />
<p:menuitem value="Novo Nível de Autoridade"
url="CadastroniveisAutoridade.xhtml" icon="ui-icon-pencil" />
</p:megaMenu>
<h:form id="frm">
<p:messages showDetail="false" showSummary="true" autoUpdate="true" />
<p:panelGrid columns="2">
<h:outputLabel value="ID do Funcionário" />
<p:inputText size="30" disabled="true"
value="#{cadastroUsuarioLoginBean.usuarioLogin.id} or {idFuncionario}"
label="Funcionário">
</p:inputText>
<h:outputLabel value="Funcionário" />
<p:inputText size="30"
value="#{nomeFuncionario}"
label="Funcionário">
</p:inputText>
<h:outputLabel value="Usuário" />
<p:inputText size="30"
value="#{cadastroUsuarioLoginBean.usuarioLogin.username}"
label="Usuário">
</p:inputText>
<h:outputLabel value="Senha" />
<p:inputText size="30"
value="#{cadastroUsuarioLoginBean.usuarioLogin.password}"
label="Senha">
</p:inputText>
<p:outputLabel for="ativo" value="Ativo:" />
<p:selectOneMenu id="ativo" value="#{cadastroUsuarioLoginBean.usuarioLogin.enable}"
style="width:125px">
<f:selectItem itemLabel="Inativo" itemValue="false" />
<f:selectItem itemLabel="Ativo" itemValue="true" />
</p:selectOneMenu>
<p:commandButton value="Salvar"
action="#{cadastroUsuarioLoginBean.salvar}" icon="ui-icon-disk"
update="@form" />
</p:panelGrid>
</h:form>
</ui:define>
</ui:composition>