Mejores prácticas en java
Colaborador | lunes, 20 de febrero de 2012 | Etiquetas: buenas prácticas, Java
Me he encontrado esta presentación en la que mencionan buenas prácticas de programación en java. Espero les sea útil. http://javafox.wordpress.com/2010/04/10/mejores-practicas-programando-en-java/
Rollback Subversion
ZeTiNeB NaBeTsE | viernes, 26 de noviembre de 2010 | Etiquetas: revert, rollback, subversion, versiones
Dentro de todas las actividades de un programador, existen ocasiones en las que es necesario revertir los cambios existentes en un manejador de versiones como Subversion.
Esta acción, se logra fácilmente realizando lo siguiente:
svn update
svn merge -r 40:35 svn://servidorsvn/proyecto/trunk
svn status
svn diff
svn commit -m "Rollback de cambios a la version 35"
Esta acción, se logra fácilmente realizando lo siguiente:
- Desde consola, ubicarse en la carpeta contenedora del "working copy".
- Realizar la actualización del repositorio: svn update
- Realizar la combinación de versiones: svn merge -r :
- El sistema, revisara y combinara los cambios realizados entre las revisiones, y obtendremos un working copy con la versión que queremos sea la nueva.
- Ahora revisamos que los cambios se hayan realizado con el comando: svn status
- Observamos las diferencias: svn diff
- Y por ultimo, para que los cambios se vean reflejados en el servidor, simplemente hacemos un: svn commit
svn update
svn merge -r 40:35 svn://servidorsvn/proyecto/trunk
svn status
svn diff
svn commit -m "Rollback de cambios a la version 35"
ERROR [ColumnsHandler] FOREACH_BAD_ITEMS
Gilberto | martes, 3 de agosto de 2010 | Etiquetas: Java, JSF, Programación, SEAM
Si alguna vez tu servidor te ha arrojado el siguiente error:
ERROR [ColumnsHandler] FOREACH_BAD_ITEMS
javax.servlet.jsp.JspTagException: FOREACH_BAD_ITEMS
at org.richfaces.iterator.SimpleForEachIterator.toForEachIterator(SimpleForEachIterator.java:135)
at org.richfaces.iterator.SimpleForEachIterator.supportedTypeForEachIterator(SimpleForEachIterator.java:98)
at org.richfaces.taglib.ColumnsHandlerIterationContext.setValue(ColumnsHandlerIterationContext.java:233)
at org.richfaces.taglib.ColumnsHandler.prepare(ColumnsHandler.java:163)
at org.richfaces.taglib.ColumnsHandler.apply(ColumnsHandler.java:186)
at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
at com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:337)
at com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:307)
at com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:524)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:44)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)
Por lo general esta asociado a los tags: rich:columns y dataTable y no es un error que pueda ser manejado por bloques try y catch. Por ejemplo, en el siguiente código es muy frecuente:
< rich:datatable id="tblVistaPrevia" value="">
< rich:columns value="#{MiBackBean.columnasVistaPrevia}" var="columna">
< f:facet name="header">#{columna}
< /rich:columns>
< /rich:datatable>
< rich:columns value="#{MiBackBean.columnasVistaPrevia}" var="columna">
< f:facet name="header">#{columna}
< /rich:columns>
< /rich:datatable>
La raíz de este error radica en que el valor que se asocia al tag rich:columns es nulo. Al querer accesar al valor e iterarlo no puede manejar un valor nulo. Por lo tanto, es necesario inicializar la colección "columnasVistaPrevia". De esta manera el error desaparecerá.
Escribir archivos txt en seam
MRNA | miércoles, 28 de julio de 2010 | Etiquetas: Java, JSF, Programación, SEAM
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response =(HttpServletResponse)context.getExternalContext().getResponse();
String fileName= "nombreArchivo.txt";
response.setContentType("text/plain");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
PrintWriter os = null;
String cadena="Hola Mundo!"
try {
os = response.getWriter();
os.println(cadena);
os.flush();
os.close();
FacesContext.getCurrentInstance().responseComplete();
} catch (IOException e) {
e.printStackTrace();
}
Espero sirva de algo esta solución, a mi si me sirvió :D
Actualización: Cambiando el setContentType y dirigiendo el ServeltOutputStream, se puede generar cualquier tipo de archivo (pdf, xls, doc, etc, etc).
Entramos de lleno en las redes sociales, espera por nuestras entradas muy pronto.
Suscribirse a:
Entradas (Atom)




