Conversão de long para string hexa:
Long.toHexString(long)
Conversão de string hexa para long:
Long.parseLong(String, 16)
sexta-feira, 27 de agosto de 2010
sexta-feira, 20 de agosto de 2010
Como atualizar a tela e também fazer um download? Usando JSF/Richfaces
Hoje eu tive um problema relativamente comum: preciso tanto fazer uma ação (ie, salvar no banco, atualizar tela) e disponibilizar um arquivo gerado dinamicamente para o usuário.
O 'a4j:commandButton' não faz download. Quer dizer, até pode fazer, mas euzinha desconheço como.
Tentei fazer um 'h:commandButton' com 'a4j:support' no onComplete, mas não funciona. Então, recebi a sugestão ao contrário, onde o 'a4j:commandButton' chama o 'h:commandButton'. Funciona que é uma beleza.
O 'a4j:commandButton' não faz download. Quer dizer, até pode fazer, mas euzinha desconheço como.
Tentei fazer um 'h:commandButton' com 'a4j:support' no onComplete, mas não funciona. Então, recebi a sugestão ao contrário, onde o 'a4j:commandButton' chama o 'h:commandButton'. Funciona que é uma beleza.
<a4j:commandButton id="btnAjax" value="Atualiza a tela e faz download" action="#{mBeanWhateva.fazAcao}" oncomplete="jQuery('[id$=btnDownload]').click()" reRender="o,que,vc,quiser"/>
<h:commandButton id="btnDownload" value="Faz o Download apenas" action="#{mBeanWhateva.fazDownload}" style="display:none"/>
<h:commandButton id="btnDownload" value="Faz o Download apenas" action="#{mBeanWhateva.fazDownload}" style="display:none"/>
public String finalizarSetup() {
// faz muita coisa
return null;
}
public String fazDownload() throws Exception {
ByteArrayOutputStream meusDadosdoRelatorio = gerarRelatorio(); // do the trick
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentType("application/force-download");
response.setHeader("Content-Disposition","attachment; filename=nomeDoArquiv.extensao");
OutputStream sos;
sos = response.getOutputStream();
sos.write(meusDadosdoRelatorio.toByteArray());
sos.flush();
sos.close();
context.responseComplete();
return null;
}
// faz muita coisa
return null;
}
public String fazDownload() throws Exception {
ByteArrayOutputStream meusDadosdoRelatorio = gerarRelatorio(); // do the trick
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentType("application/force-download");
response.setHeader("Content-Disposition","attachment; filename=nomeDoArquiv.extensao");
OutputStream sos;
sos = response.getOutputStream();
sos.write(meusDadosdoRelatorio.toByteArray());
sos.flush();
sos.close();
context.responseComplete();
return null;
}
quarta-feira, 18 de agosto de 2010
JConsole no Tomcat
Aprendi hoje.
JConsole é um aplicativo para verificar desempenho, memória, essas coisas. Está dentro do bin do JDK.
Coloque no tomcat:
Por alguma razão, sem o "=true" do primeiro parâmetro era possível ligar o tomcat, mas dava 'connection refused'.
JConsole é um aplicativo para verificar desempenho, memória, essas coisas. Está dentro do bin do JDK.
Coloque no tomcat:
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=falseRode o JConsole, chame pelo 'Remote Process' servidor:8004 e pronto ;)
Por alguma razão, sem o "=true" do primeiro parâmetro era possível ligar o tomcat, mas dava 'connection refused'.
quarta-feira, 11 de agosto de 2010
Url-pattern no tomcat
Tenho uma aplicação cuja autenticação é feita pelo contexto. A princípio, todas as páginas *.jsp e *,jsf estavam protegidas; todos os arquivos (jsp, imagens, css) estavam dentro da pasta 'pages', dentro de WEB-INF.
Precisei de uma página pública. Pensei com meus botões... 'hum, /pages/*.jsf deve dar conta'. E quem disse que pode, né? Uma hora para entender o porque. Só pode OU definir a pasta OU definir a extensão, nunca os dois juntos
http://stackoverflow.com/questions/2714726/web-xml-are-url-pattern-tags-relative-to-each-other
Acreditem, eu xinguei muito. No fim, tive que proteger /pages/cada_pasta e cada um dos JSPs que estava dentro de pages direto. Empenho
Precisei de uma página pública. Pensei com meus botões... 'hum, /pages/*.jsf deve dar conta'. E quem disse que pode, né? Uma hora para entender o porque. Só pode OU definir a pasta OU definir a extensão, nunca os dois juntos
http://stackoverflow.com/questions/2714726/web-xml-are-url-pattern-tags-relative-to-each-other
In the Web application deployment descriptor, the following syntax is used to define mappings:
A string beginning with a ‘/’ character and ending with a ‘/*’ suffix is used for path mapping.
A string beginning with a ‘*.’ prefix is used as an extension mapping.
A string containing only the ’/’ character indicates the "default" servlet of the application. In this case the servlet path is the request URI minus the context path and the path info is null.
All other strings are used for exact matches only
Acreditem, eu xinguei muito. No fim, tive que proteger /pages/cada_pasta e cada um dos JSPs que estava dentro de pages direto. Empenho
Oie
Esse blogue é minha área de transferência, guardando para a posteridade. Uma hora eu arranjo um template decente, daí vai até parecer que trabalho com isso!
Assinar:
Postagens (Atom)