Java Web JSP/Html

Gostaria de uma ajuda para uma dúvida bem simples, porém estou apanhando por ser iniciante e não localizei solução até o momento.
Imagina o menu do lado esquerdo, quero clicar em Produto e aparecer o formulário do lado direito dentro da DIV, digamos assim, estou usando tipo o sistema de Grid do bootstrap.
Não quero que o formulário direcione p/ outra aba ou de forma ampla.
Em páginas JSP usando Jstl ou simplesmente Html não estou conseguindo fazer. Alguém pode dar uma ajuda?
Desculpe minha ignorância, mas sou novato em java. E mesmo que seja em html não estou conseguindo.

<a class="list-group-item list-group-item-action list-group-item-light p-3" href="inserir.jsp" >Produto</a>

De acordo com esse código acima, essa página, abre de forma independente em outra aba/página.
Grato pela ajuda…

Com JSP, vc consegue usando as tags como templates. Como achei um exemplo prático, vou postar o vídeo aqui para vc ver. Caso tenha dúvidas, pode perguntar: Building Website Template with JSP Tag File - YouTube

Já usei dessa forma e, apesar de ser algo mais antigo, funciona muito bem.

1 curtida

Beleza
Lucas, vou testar e dou retorno aqui mais tarde! :slight_smile:

Faltou um → target="_blank" para abrir em uma nova página.

Prezado Lucas, acabei de fazer por aqui e achei bem interessante esse conceito desse template.
Ele não muda/expande a página para uma nova. De certa forma chama a JSP dentro da mesma página. Irei agora tentar adaptar ao meu uso. Creio que para isso terei de usar CSS. Valeu demais a dica, te agradeço! Grande Abraço! :slight_smile:

1 curtida

Prezado Wallace na verdade, eu quero chamar/abrir essa página sem abrir nova página. No PHP, já segui tutorial com Switch Case e dava certo, no Java como estou iniciando, tive dificuldades. Grato pelo retorno!

É bacana. Basta definir o template, onde o fragmento de página vai ser inserido e usar o template nas páginas e pronto. Assim, vc até consegue ter templates diferentes tb se necessário.

1 curtida
<%@taglib prefix="mt" tagdir="/WEB-INF/tags"%>
	<mt:template title="Listar Produto">
		<jsp:attribute name="content"> 
           <% 
             Aqui vai um Try/Catch com a listagem

            %>
               </jsp:attribute>
</mt:template>

Lucas sabe me dizer porque de nenhuma forma essas tags não aceitam essas Scriptlets? Dá erro, porém se eu colocar elas fora das tags funcionam. Porém precisa ficar dentro pois há um

<div class="container">

no qual ficam perfeitamente alinhados…

Talvez seja um mecanismo para evitar o uso. Pq usando taglibs, vc não precisa mais usar scriptlets.

Realmente.
Andei lendo bastante sobre isso. Trata-se de más práticas.
Certinho, achei uma forma de fazer diferente. Obrigado pelo retorno!

1 curtida

Prezado Lucas se possível gostaria de uma última ajuda sua neste assunto.

usando Scriptlets, como foi falado anteriormente há certo limite do uso delas quando usamos as TAGS TEMPLATE.

Para finalizar meus estudos referente a um CRUD em JAVA EE. Na parte de edição de um formulário, tem como me dar uma dica para que eu mude a forma do resgate desses dados oriundos da servlet, quando eu clicar na lista para alterar e enviar para o form de edição?
Eu estava usando:

                        <tr>
				<td><input type="text" name="idcon" id="" readonly
					value="<%out.print(request.getAttribute("idcon"));%>"></td>
			</tr>

porém com uso do template que fragmenta, isso não mais é possivel.
Consigo usar o <c:forEach> para listar os dados. Mas ainda não encontrei algo para resgatar esses dados do banco através da servlet, conforme abaixo:

          <div class="form-group">
		  		<label for="id">Codigo</label>
		     	<input type="text" name="idcon" id="idcon" readonly="readonly"  value="????????">    
           </div>

deve haver algo referente a tag <c: mas não encontrei, pode me dar uma dica?

Ao carregar a lista na página, vc deverá conseguir acessar o idcon dessa forma:

<tr>
  <td>
    <!-- Usando EL -->
    <input type="text" name="idcon" id="" readonly value="${idcon}">
    <!-- Usando taglib -->
    <input type="text" name="idcon" id="" readonly value="<c:out value="${idcon}"></c:out>">
  </td>
</tr>

A vantagem do <c:out> é que ele pode fazer uns tratamentos quando necessário, como por exemplo, escapar texto em html.

Ótimo, com EL, conseguiu pegar os dados. Já com <c:out dentro do input ele imprime a estrutura do <c:out e não o valor do banco. Vou mexendo aqui.
Grato pela boa vontade amigão!

Tente usar aspas simples no c:out:

<input type="text" name="idcon" id="" readonly value="<c:out value='${idcon}'/>">

Mas se somente com EL resolver, tá ótimo. Bom que fica até mais limpo.

Somente para ver como fica, tentei algumas alterações quase deu certo, imprimindo somente o fechamento da tag /> sem os demais anteriores. A questão deve ser aspas simples e duplas.
Vou deixar com as EL mesmo.
Para questão de aprendizado depois vejo com a tag <c:out>
Obrigado Lucas e até mais!

1 curtida