Galera… to utilizando post em ajax pra popular uma tabela dentro do meu html e cheguei no seguinte problema: Preciso chamar uma function do js na minha página logo após inserir um registro no banco via hibernate… essa funcao seria resposavel por realizar a atualização da tabela… qual a melhor maneira de fazer isso??? Já tentei dar um out.println"(bla bla bla…) soh q naum rolou nao… tem outra maneira melhor?
Eu tentei tbm criar um funcao em javascript q logo apos q eu envio meu form via ajax ele recarrega essa table… más ai parece q o recarregamento é mais rápido do que a insercao no banco via hibernate e dai se tem 2 registros no banco ele sempre mostra 1 soh pq parece q nao deu tempo de inserir o outro…!!! Por isso queria colocar logo depois da insercao no servlet
minha function na index.jsp
function refresh_ben(){
openPage('RecriarTable.jsp','tb_ben','');
}
Ajax
function openPage(url,target,varGets){
xmlRequest = objXMLHTTP(); //obj XMLRequest
xmlRequest.onreadystatechange = function(){
if(xmlRequest.readyState == 1){
document.getElementById(target).innerHTML = '<center><img src="loadingAnimation.gif" /></center>';
}else if(xmlRequest.readyState == 4){
if(xmlRequest.status == 200){
var pagina = unescape(xmlRequest.responseText);
document.getElementById(target).innerHTML = pagina;
//extraiScript(pagina);
window.alert(pagina);
}else{
document.getElementById(target).innerHTML = '<h2>Erro ao carregar pagina.</h2>';
}
}
}
xmlRequest.open("POST",url + '?' + varGets,true);
xmlRequest.send(null);
}
meu servlet que trata a adicao do novo registro no banco
package myServlets;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import Entities.Beneficiado;
import Entities.Document;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author Vinicius
*/
public class Benef_Treatment extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=latin1");
PrintWriter out = response.getWriter();
try {
Beneficiado b = new Beneficiado();
b.setNome(request.getParameter("name"));
if (b.getNome().isEmpty()) {
new NullPointerException("Nome não pode ser vazio");
}
b.setRg(request.getParameter("reg"));
if (b.getRg().isEmpty()) {
new NullPointerException("RG não pode ser vazio");
}
b.setCargo(request.getParameter("cargo"));
b.setDepartamento(request.getParameter("dpto"));
b.setRamal(request.getParameter("ramal"));
b.setCc(request.getParameter("cc"));
if (b.getCc().isEmpty()) {
new NullPointerException("Centro de custo não pode ser vazio");
}
String group = request.getParameter("group");
if(group != null){
b.setPlanta(group);
} else {
new NullPointerException("É necessário escolher uma planta");
}
Document main = (Document)request.getSession().getAttribute("doc");
if(main == null){
throw new NullPointerException("Não foi possível retornar Document!");
}
b.setIdDoc(main);
request.getSession().setAttribute("last_benef", b);
new BenefDAO().insert(b);
} catch (Exception ex) {
response.sendRedirect("Err?err=" + ex.getMessage());
ex.printStackTrace();
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="Métodos HttpServlet. Clique no sinal de + à esquerda para editar o código.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}