String to Date conversion using an html form

Asked

Viewed 60 times

1

I’m having trouble converting String to Date, here are the codes:

Event:

@Entity(name = "Evento")
@Table(name = "evento_table")
public class Evento {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column
private Long id;

@Column
private String nome;

@Column
private String descricao;

@Column
@Temporal(TemporalType.DATE)
private Date inicio;

@Column
@Temporal(TemporalType.DATE)
private Date fim;

@Column
private boolean disponibilidade;

@OneToOne(cascade = javax.persistence.CascadeType.ALL, orphanRemoval = true)
public Marcador marcador;

public Evento(){
};

public Evento(String nome, String descricao, Date inicio, Date fim, boolean disponibilidade, Marcador marcador) throws ValidationException {
    super();

    if (nome == null || nome.trim().isEmpty()) {
        throw new ValidationException("Nome do evento nao pode ser vazio");
    }

    if (descricao == null || descricao.trim().isEmpty()) {
        throw new ValidationException("Descricao do evento nao pode ser vazio");
    }

    if (inicio.compareTo(fim) >= 0){
        throw new ValidationException("Data de inicio nao pode ser maior ou igual que o seu fim");
    }

    this.nome = nome;
    this.descricao = descricao;
    this.inicio = inicio;
    this.fim = fim;
    this.disponibilidade = disponibilidade;
    this.marcador = marcador;

}

public Long getId() { }

public void setId (Long id){ }

public String getNome() { }

public void setNome(String nome) { }

public String getDescricao() { }

public void setDescricao(String descricao) { }

public Calendar getInicio() { }

public void setInicio(Date inicio) throws ValidationException { }

public Calendar getFim() { }

public void setFim(Calendar fim) throws ValidationException { }

public boolean getDisponibilidade() { }

public void setDisponibilidade (boolean disponibilidade) { }

public Marcador getMarcador(){ }

public void setMarcador(Marcador marcador){ }

}

HTML form:

<fieldset>
            <!-- Form Name -->
            <legend>Cadastrar Evento</legend>
            <!-- Text input-->
            <div class="form-group">
                <label class="col-md-4 control-label" for="textinput">Nome:</label>
                <div class="col-md-4">
                    <input id="nomeEvento" name="nomeEvento" class="form-control input-md" type="text" >
                </div>
            </div>
            <!-- Text input-->
            <div class="form-group">
                <label class="col-md-4 control-label" for="textinput">Descrição:</label>
                <div class="col-md-4">
                    <textarea cols="100" rows="4" id="descricaoEvento" name="descricaoEvento" class="form-control input-md" type="text">
					</textarea>
                </div>
            </div>

            <!-- ONDE EU PEGO O INICIO DO EVENTO E DOU SET ATRAVÉS DE EVENTO.SETINICIO() NO CONTROLLER-->
            <div class="form-group">
                <label class="col-md-4 control-label" for="textinput">Início:</label>
                <div class="col-md-4">
                    <input id="inicioEvento" name="inicioEvento" class="form-control input-md" type="datetime-local">
                </div>
            </div>

            <!-- ONDE EU PEGO O FIM DO EVENTO E DOU SET ATRAVÉS DE EVENTO.SETFIM() NO CONTROLLER -->
            <div class="form-group">
                <label class="col-md-4 control-label" for="textinput">Término:</label>
                <div class="col-md-4">
                    <input id="TerminoEvento" name="TerminoEvento" class="form-control input-md" type="datetime-local">
                </div>
            </div>

            <!-- Select Basic -->
            <div class="form-group">
                <label class="col-md-4 control-label" for="selectbasic">Localização:</label>
                <div class="col-md-4">
                    <select id="localizacaoEvento" name="localizacaoEvento" class="form-control">
                    @for(marcador <- listMarcador){
                        <option value="@marcador.getId()">@marcador.getTitulo()</option>
                    }
                    </select>
                </div>
            </div>

            <!-- Multiple Radios (inline) -->
            <div class="form-group">
                <label class="col-md-4 control-label" for="disponibilidade">Disponivel</label>
                <div class="col-md-4">
                    <label class="radio-inline" for="disponibilidade-0">
                        <input name="disponibilidade" id="disponibilidade-0" value="True" checked="checked" type="radio">
                        Sim
                    </label>
                    <label class="radio-inline" for="disponibilidade-1">
                        <input name="disponibilidade" id="disponibilidade-1" value="False" type="radio">
                        Não
                    </label>
                </div>
            </div>
            <!-- Button (Double) -->
            <div class="form-group">
                <label class="col-md-4 control-label" for="button1id"></label>
                <div class="col-md-8">
                    <input type="submit" name="criar" value="Criar" class="btn btn-success">
                    <input type="reset" name="limpar" value="Limpar" class="btn btn-danger">
                </div>
            </div>
        </fieldset>

Controller event:

public class EventoController extends Controller implements Services {
private static final GenericDAO dao = new GenericDAO();
private List<Marcador> listMarcador = dao.findAllByClass(Marcador.class);

@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result cadastrar() {
    DynamicForm requestEvento = Form.form().bindFromRequest();
    Calendar date = new GregorianCalendar();

    if(requestEvento.hasErrors()){
        return badRequest(criar.render("ConnectUni - cadastrar evento", listMarcador));

    } else {
        Map<String, String> formMap = requestEvento.data();
        Evento evento = new Evento();

        if(formMap.get("nomeEvento").trim().isEmpty()){
            flash("erro", "nome nao pode ser vazio");
            return badRequest(criar.render("ConnectUni - cadastrar evento", listMarcador));
        }

        evento.setNome(formMap.get("nomeEvento"));

        if(formMap.get("descricaoEvento").trim().isEmpty()){
            flash("erro", "descricao nao pode ser vazio");
            return badRequest(criar.render("ConnectUni - cadastrar evento", listMarcador));
        }

        evento.setDescricao(formMap.get("descricaoEvento"));

        //Como setar os inicio e termino do evento?
        //evento.setInicio();
        //evento.setTermino();

        evento.setDisponibilidade(Boolean.valueOf(formMap.get("disponibilidade")));
        evento.setMarcador(dao.findByEntityId(Marcador.class, Long.valueOf(formMap.get("localizacaoEvento"))));

        dao.persist(evento);
        dao.flush();

        flash("sucesso", "cadastrado com sucesso !");
        return ok(criar.render("ConnectUni - cadastrar evento", listMarcador));
    }

}

@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result detalhes(Long id) {
    Evento evento = dao.findByEntityId(Evento.class, id);
    return null;
}

@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result editar(Long id) {
    Evento evento = dao.findByEntityId(Evento.class, id);
    DynamicForm requestEvento = Form.form().bindFromRequest();

    if(requestEvento.hasErrors()){
        return badRequest(editar.render("ConnectUni - editar evento", evento, listMarcador));

    } else {
        Map<String, String> formMap = requestEvento.data();

        if(formMap.get("nomeEvento").trim().isEmpty()){
            flash("erro", "nome nao pode ser vazio");
            return badRequest(editar.render("ConnectUni - editar evento", evento, listMarcador));
        }

        evento.setNome(formMap.get("nomeEvento"));

        if(formMap.get("descricaoEvento").trim().isEmpty()){
            flash("erro", "descricao nao pode ser vazio");
            return badRequest(editar.render("ConnectUni - editar evento", evento, listMarcador));
        }

        evento.setDescricao(formMap.get("descricaoEvento"));

        //Como setar os inicio e termino do evento?
        //evento.setInicio();
        //evento.setFim();
        evento.setDisponibilidade(Boolean.valueOf(formMap.get("disponibilidade")));
        evento.setMarcador(dao.findByEntityId(Marcador.class, Long.valueOf(formMap.get("localizacaoEvento"))));

        dao.persist(evento);
        dao.flush();

        flash("sucesso", "editado com sucesso !");
        return ok(editar.render("ConnectUni - editar evento", evento, listMarcador));
    }
}

@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result deletar(Long id) {
    boolean disponibilidade = dao.findByEntityId(Evento.class, id).getDisponibilidade();
    dao.removeById(Evento.class, id);
    dao.flush();

    flash("sucesso", "evento deletado com sucesso.");
    return redirect(routes.EventoController.getAll(disponibilidade));
}

@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result getAll(boolean disponibilidade) {
    Query consultaEvento = dao.createQuery("FROM Evento e  WHERE e.disponibilidade = :parametro");
    consultaEvento.setParameter("parametro", disponibilidade);

    List<Evento> listEvento = consultaEvento.getResultList();

    return ok(listar.render("ConnectUni - listar eventos disponiveis", listEvento));
}

@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result getAll() {
    List<Evento> eventos = dao.findAllByClass(Evento.class);
    return ok(listar.render("ConnectUni - cadastrar evento", eventos));
}

@Transactional
@Security.Authenticated(Secured.class)
public Result getPagecadastrarEvento() {
    return ok(criar.render("ConnectUni - cadastrar evento", listMarcador));
}

@Transactional
@Security.Authenticated(Secured.class)
public Result getPageditarEvento(long id) {
    Evento evento = dao.findByEntityId(Evento.class, id);
    return ok(editar.render("ConnectUni - cadastrar evento", evento, listMarcador));
}

}

Here is the problem, through the html form, where I will take the attributes to create a new event, I will use what was filled and through the eventController set the attributes in the Event class, but when it comes to taking the values of the 2 datetime-local startEvento and Terminoevento (html form) and use them to set the attributes start and end of the Event class, I come across a small problem. Apparently the datetime-local of the html form return Strings and setInicio() and setTermino() of the Event class require a Date as parameter, but I cannot do such a conversion within the eventController class, any idea of how to do?

  • @Renan, I’ve improved the question, see if you can understand now.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.