1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Habilitação de Campos do formulário

enter code hereQuando o usuário carregar a página de Cadastrar Exame, todos os campos do formulário deverão estar desabilitados, ao clicar no botão Incluir, os campos ficarão habilitados para preenchimento. Estou usando JSF 2.2 e PrimeFaces 5.0.

Segue o código abaixo:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <ui:decorate template="/templates/telaInicial.xhtml">
        <ui:define name="centro">
            <h:form id="form_inserir_Exame">
                <p:messages />               
                <table>
                    <h2>Cadastro de Exame(s)</h2>
                    <p:separator/>
                    <p:toolbar>
                        <p:toolbarGroup align="center">
                            <p:commandButton value="Inserir" icon="ui-icon-plusthick" id="inserir" />
                            <p:commandButton value="Cancelar" icon="ui-icon-cancel" />
                            <p:commandButton value="Limpar Campos" icon="ui-icon-closethick" type="reset"/>
                        </p:toolbarGroup>
                    </p:toolbar>
                    <p:separator />
                    <tr>
                        <td>Nome</td>
                        <td><p:inputText type="text" size="30" placeholder="Nome do Paciente" required="true"
                                         requiredMessage="Campo Nome obrigatório!" id="nomePaciente"/></td>
                    </tr>
                    <tr>
                        <td>Data de Nascimento</td>
                        <td><p:inputMask size="30" placeholder="Data de Nascimento" required="true" mask="99/99/9999" 
                                         requiredMessage="Campo Data de Nascimento obrigatório!" id="dtNascimento"/></td>
                    </tr>
                    <tr>
                        <td>Data de Coleta</td>
                        <td><p:calendar size="30" placeholder="Selecione a Data" required="true" 
                                        requiredMessage="Campo Data da Coleta Obrigatório!" id="dtColeta"/></td>
                    </tr>
                    <tr>
                        <td>Data de Entrega</td>
                        <td><p:calendar label="Selecione a Data" size="30"  placeholder="Selecione a Data" required="true" 
                                        requiredMessage="Campo Data de Entrega Obrigatório!" id="dtEntrega"/></td>
                    </tr>
                    <tr>
                        <td>Médico Solicitado</td>
                        <td><p:selectOneMenu id="medico" label="Selecione o Médico" style="width: 100%;" required="true"
                                             requiredMessage="Campo Selecione o Médico Obrigatório!"/></td>
                    </tr>
                    <tr>
                        <td>Tipo de Exame</td>
                        <td><p:selectOneMenu id="exame" style="width: 100%;" required="true"
                                             requiredMessage="Campo Selecione o Médico Obrigatório!"/></td>
                    </tr>
                </table>                
                <p:separator/>
                    <p:toolbar>
                        <p:toolbarGroup align="center">
                            <p:commandButton value="Cadastrar" icon="ui-icon-disk" id="cadastrar"/>
                        </p:toolbarGroup>
                    </p:toolbar>
                    <p:separator />
            </h:form>
        </ui:define>
    </ui:decorate>
</html>
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import negocio.Exame;
import negocio.Paciente;
import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;
import repositorio.RepositorioExame;


@ManagedBean(name = "controleExame")
@SessionScoped
public class ControladorExame {
    private RepositorioExame re = null;
    private Exame selectedexame;
    private boolean desativado = true;

    public ControladorExame(){
        this.re = new RepositorioExame();
    }

    public Exame getSelectedexame() {
        return selectedexame;
    }

    public void setSelectedexame(Exame selectedexame) {
        this.selectedexame = selectedexame;
    }

    public boolean isDesativado() {
        return desativado;
    }

    public void setDesativado(boolean desativado) {
        this.desativado = desativado;
    }

    public String inserirExame(Exame t){
       this.re.inserir(t);

        return "apresentaExame.xhtml";
    }

    public String editarExame(Exame t){


        this.re.editar(t);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONCLUÍDO", "Exame editado com Sucesso!"));
        return "apresentaExame.xhtml";
    }

    public Exame recuperarExame(int g){
        return (Exame) this.re.recuperar(g);
    }

    public void deletarExame(Exame t){
        this.re.deletar(t);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONCLUÍDO", "Exame deletado com Sucesso!"));

    }

    public List<Exame> recuperarTodosExames(){
        return this.re.recuperarTodos();
    }

    public void abrirDialogo(){
        Map<String, Object> opcoes = new HashMap<>();
        opcoes.put("modal", true);
        opcoes.put("rezisable", false);
        opcoes.put("contentHeight", 470);

        RequestContext.getCurrentInstance().openDialog("selecaoPaciente", opcoes, null);
    }

    public void selecionar(Paciente paciente){
        RequestContext.getCurrentInstance().closeDialog(paciente);
    }

    //No HTML implementar no botão do diálogo 1 <p:ajax/> com o atributo 'listenner' contendo esta função. Atributo event recebe: 'dialogReturn'
    public void pacienteSelecionado(SelectEvent evento){
        Paciente paciente = (Paciente)evento.getObject();
        this.selectedexame.setPaciente(paciente);
    }

    public String getNomePaciente(){
        return this.selectedexame.getPaciente() == null 
                ? null : this.selectedexame.getPaciente().getNome();
    }

    public void setNomePaciente(String nome){

    }
}
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://xmlns.jcp.org/jsf/core">

    <script>
        function disableTxt() {
            document.getElementById("nome").disabled = true;
        }

        function undisableTxt() {
            document.getElementById("nome").disabled = false;
        }
    </script>

    <ui:decorate template="/templates/telaInicial.xhtml">
        <ui:define name="centro">
            <h:form id="form_inserir_Exame">
                <p:messages />               
                <table>
                    <h2>Cadastro de Exame(s)</h2>
                    <p:separator/>
                    <p:toolbar>
                        <p:toolbarGroup align="center">
                            <p:commandButton value="Inserir" icon="ui-icon-plusthick" id="inserir"/>
                            <p:commandButton value="Cancelar" icon="ui-icon-cancel"/>
                            <p:commandButton value="Limpar Campos" icon="ui-icon-closethick" type="reset"/>
                        </p:toolbarGroup>
                    </p:toolbar>
                    <p:separator />
                    <tr>
                        <td>Nome</td>
                        <td><p:inputText type="text" size="30" placeholder="Nome do Paciente" required="true"
                                         requiredMessage="Campo Nome obrigatório!" id="nome"/></td>
                    </tr>
                    <tr>
                        <td>Data de Nascimento</td>
                        <td><p:inputMask size="30" placeholder="Data de Nascimento" required="true" mask="99/99/9999" 
                                         requiredMessage="Campo Data de Nascimento obrigatório!" id="dtNascimento"/></td>
                    </tr>
                    <tr>
                        <td>Data de Coleta</td>
                        <td><p:calendar size="30" placeholder="Selecione a Data" required="true" 
                                        requiredMessage="Campo Data da Coleta Obrigatório!" id="dtColeta"/></td>
                    </tr>
                    <tr>
                        <td>Data de Entrega</td>
                        <td><p:calendar label="Selecione a Data" size="30"  placeholder="Selecione a Data" required="true" 
                                        requiredMessage="Campo Data de Entrega Obrigatório!" id="dtEntrega"/></td>
                    </tr>
                    <tr>
                        <td>Médico Solicitado</td>
                        <td><p:selectOneMenu id="medico" label="Selecione o Médico" style="width: 100%;" required="true"
                                             requiredMessage="Campo Selecione o Médico Obrigatório!"/></td>
                    </tr>
                    <tr>
                        <td>Tipo de Exame</td>
                        <td><p:selectOneMenu id="exame" style="width: 100%;" required="true"
                                             requiredMessage="Campo Selecione o Médico Obrigatório!"/></td>
                    </tr>
                </table>                
                <p:separator/>
                <p:toolbar>
                    <p:toolbarGroup align="center">
                        <p:commandButton value="Cadastrar" icon="ui-icon-disk" id="cadastrar"/>
                    </p:toolbarGroup>
                </p:toolbar>
                <p:separator />
            </h:form>
        </ui:define>
    </ui:decorate>
</html>
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package negocio;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Table
@Entity
@RequestScoped
@ManagedBean(name="exame")
public class Exame implements Serializable{
    @Id
    @GeneratedValue
    private int codigo;
    @Column(length = 30)
    private String tipo;
    @OneToMany
    private Paciente paciente;
    //Especificar se é um médico ou um campo vazio a ser preenchido
    @Column(length = 30)
    private String requisitante;

    public Exame() {
    }

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public Paciente getPaciente() {
        return paciente;
    }

    public void setPaciente(Paciente paciente) {
        this.paciente = paciente;
    }

    public String getRequisitante() {
        return requisitante;
    }

    public void setRequisitante(String requisitante) {
        this.requisitante = requisitante;
    }

    @Override
    public String toString() {
        return "Exame{" + "codigo=" + codigo + ", tipo=" + tipo + ", paciente=" + paciente + ", requisitante=" + requisitante + '}';
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 83 * hash + this.codigo;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Exame other = (Exame) obj;
        if (this.codigo != other.codigo) {
            return false;
        }
        return true;
    }

}
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import negocio.Exame;
import negocio.Paciente;
import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;
import repositorio.RepositorioExame;


@ManagedBean(name = "controleExame")
@SessionScoped
public class ControladorExame {
    private RepositorioExame re = null;
    private Exame selectedexame;
    private boolean desativado = true;

    public ControladorExame(){
        this.re = new RepositorioExame();
    }

    public Exame getSelectedexame() {
        return selectedexame;
    }

    public void setSelectedexame(Exame selectedexame) {
        this.selectedexame = selectedexame;
    }

    public boolean isDesativado() {
        return desativado;
    }

    public void setDesativado(boolean desativado) {
        this.desativado = desativado;
    }

    public String inserirExame(Exame t){
       this.re.inserir(t);

        return "apresentaExame.xhtml";
    }

    public String editarExame(Exame t){


        this.re.editar(t);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONCLUÍDO", "Exame editado com Sucesso!"));
        return "apresentaExame.xhtml";
    }

    public Exame recuperarExame(int g){
        return (Exame) this.re.recuperar(g);
    }

    public void deletarExame(Exame t){
        this.re.deletar(t);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONCLUÍDO", "Exame deletado com Sucesso!"));

    }

    public List<Exame> recuperarTodosExames(){
        return this.re.recuperarTodos();
    }

    public void abrirDialogo(){
        Map<String, Object> opcoes = new HashMap<>();
        opcoes.put("modal", true);
        opcoes.put("rezisable", false);
        opcoes.put("contentHeight", 470);

        RequestContext.getCurrentInstance().openDialog("selecaoPaciente", opcoes, null);
    }

    public void selecionar(Paciente paciente){
        RequestContext.getCurrentInstance().closeDialog(paciente);
    }

    //No HTML implementar no botão do diálogo 1 <p:ajax/> com o atributo 'listenner' contendo esta função. Atributo event recebe: 'dialogReturn'
    public void pacienteSelecionado(SelectEvent evento){
        Paciente paciente = (Paciente)evento.getObject();
        this.selectedexame.setPaciente(paciente);
    }

    public String getNomePaciente(){
        return this.selectedexame.getPaciente() == null 
                ? null : this.selectedexame.getPaciente().getNome();
    }

    public void setNomePaciente(String nome){

    }
}
  • Que jeito estranho... Faz uma tela só com os dados, com outputtext, e outra com os campos para edição.

    Alex Kayser   30 de set de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags input java jsf ou faça a sua própria pergunta.